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

时间:2009-07-02 21:45:44

标签: php session warnings

我是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

任何想法?

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

我试过把它放在

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

但这只会产生更多警示标志。任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:4)

似乎用户php正在运行的/ tmp / dir不可读或不可写。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

“已发送标头”错误是由第一个引起的。这里的其他答案试图调试它不会帮助你。修复第一个错误,第二个错误将消失。第一个错误告诉您问题已经存在 - Web服务器无法写入/ tmp目录。 / tmp通常是777(rwxrwxrwx)。

答案 3 :(得分:0)

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

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