繁体   English   中英

警告:会话权限已被拒绝/已在PHP中发送标头

[英]Warning: Sessions Permission Denied/Headers Already Sent in PHP

我是PHP的初学者。

我收到以下错误。 我无法从计算机上的FF,IE和Chrome浏览器中查看错误,但是从另一台计算机的浏览器浏览时却看到错误提示。

Warning: session_start() [function.session-start]: open(/tmp/sess_c464nadk4jsn4u43mpqipkjbr7, O_RDWR) failed: Permission denied (13) in "file location" on line X

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at "file location":line X) in "file location" on line X

有任何想法吗?

我在include之前有session_start(),这意味着在任何html之前,并且该会话仅用于携带一个变量。

我试过把它放在

Header("Cache-control: private, no-cache");
Header("Pragma: no-cache");

但这只会产生更多警告信号。 任何帮助,将不胜感激!

似乎/ tmp /目录无法以用户php的身份运行。

  • <?php起始标记之前是否有空格或其他任何字符?
  • session_start()真的是php块中的第一条语句吗?

“头已发送”错误是由第一个错误引起的。 尝试调试它的其他答案不会帮助您。 修正第一个错误,第二个错误将消失。 第一个错误告诉您问题所在-/ tmp目录不可被Web服务器写入。 / tmp通常是777(rwxrwxrwx)。

第一个错误似乎表明temp目录中缺少写许可权,但也可以链接到第二个错误。

第二个错误通常仅在session_start()调用之前从php脚本发送某种输出时发生,因为它将自动发送HTTP标头。 在实际调用之前或<?php开头括号之前,这可以是任何类型的html甚至文件中的空白行或空格。 正如Shane在评论中所建议的那样,第二个错误的原因很可能是第一个错误的错误消息(无法将会话写入/ tmp中的文件)导致发送标头,因此现在为时已晚发送给他们与header()调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM