PHP session_start()失败,除非设置了error_log文件


PHP session_start() failed unless error_log file set?

遇到了一个奇怪的情况,我希望有人能更全面地向我解释。

我们有一个相当简单的PHP站点,它使用session_start()来记录页面之间的一些数据。我们在一台服务器(OS X)上完成了这项工作并运行良好,然后切换到另一台服务器上(Windows Server2008)。它开始在这个新服务器上引发"500个内部服务器错误"消息。

两台服务器之间的PHPinfo结果几乎相同。它们都具有log_error=Yes和"error_log"=No Value。

然而,为了更准确地确定发生了什么(因为IIS只报告了HTTP错误消息,而没有报告PHP错误),我将"error_log"路径设置为某个文件。这似乎让一些事情感到高兴,因为PHP开始按预期工作了。它不再从session_start()调用中抛出错误!此时日志文件中没有错误。

因此,似乎只要有一个可用的日志文件就可以让它感到高兴,并且不再引起错误。有人能帮我了解那里的背景情况吗?

谢谢。C

问题不在于导致"500内部服务器错误"的错误日志文件。可能存在导致500服务器错误的任何其他原因。如果错误出现在error_log文件中,PHP/Apache就会崩溃,并且永远不会显示错误消息。500错误表示处理文件中的错误。

我也多次收到相同的错误信息。真正的问题是文件的编码。将文件从一种类型的操作系统传输到另一种类型操作系统时导致错误。您还将文件从OSX传输到Windows,并且两者都有不同的文件写入模式。

在我的情况下,最好的解决方法是,我创建一个新文件,并在新文件中跳过旧代码,然后尝试运行它,它就会通过。