我是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");
但这只会产生更多警示标志。任何帮助将不胜感激!
答案 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()
电话发送给他们。