PHP设置error_log对程序的影响
时间:2008-01-26 来源:phpor
问题
在别的服务器上可以运行的PHP程序 ,上传到Prima for Linux系统上 ,或者输出大量php错误,或者直接报告500服务器错误 ;如果打开CGIwrap的debug模式,可看到大量数据库和php错误
例如wordpress-2.3.2程序,在Prima系统上报告500服务器错误
基本的install.php安装程序都无法运行
解决方案
这是由于程序代码中存在一些不兼容的调用造成的
例如,对于代码错误的输出,网站PHP程序中使用了error_log函数
error_log($error_str, 0);
在函数error_log中,输出方式指定为0的话,以为着向stdout输出
即直接把错误“打印”到当前linux的console上
如果PHP和Apache用模块方式结合,则这个错误会被隐藏掉
因为作为apache一部分的php运行是由httpd完成的,自身没有地方输出
如果是使用CGI方式,则这部分错误信息都会直接打在当前屏幕上
所以,在正常页面上方,就会看到数条错误信息
如果错误信息出现的位置是第一行,此前没有任何html被输出
则apache还会返回500服务器错误,实际错误都将被隐藏
为了解决这个问题,需要将php.ini中的error_log全局log打开
这样使得CGI方式的PHP会将报错写入到日志文件中,就不会发生这样的错误了
以AS4系统使用PHP4为例
编辑/usr/local/php4/etc/php.ini
找到如下一行:
;error_log = syslog
将这行前边的分号删除,即表示将php的错误打印到/var/log/message
如此,程序即可正常运行
在别的服务器上可以运行的PHP程序 ,上传到Prima for Linux系统上 ,或者输出大量php错误,或者直接报告500服务器错误 ;如果打开CGIwrap的debug模式,可看到大量数据库和php错误
例如wordpress-2.3.2程序,在Prima系统上报告500服务器错误
基本的install.php安装程序都无法运行
解决方案
这是由于程序代码中存在一些不兼容的调用造成的
例如,对于代码错误的输出,网站PHP程序中使用了error_log函数
error_log($error_str, 0);
在函数error_log中,输出方式指定为0的话,以为着向stdout输出
即直接把错误“打印”到当前linux的console上
如果PHP和Apache用模块方式结合,则这个错误会被隐藏掉
因为作为apache一部分的php运行是由httpd完成的,自身没有地方输出
如果是使用CGI方式,则这部分错误信息都会直接打在当前屏幕上
所以,在正常页面上方,就会看到数条错误信息
如果错误信息出现的位置是第一行,此前没有任何html被输出
则apache还会返回500服务器错误,实际错误都将被隐藏
为了解决这个问题,需要将php.ini中的error_log全局log打开
这样使得CGI方式的PHP会将报错写入到日志文件中,就不会发生这样的错误了
以AS4系统使用PHP4为例
编辑/usr/local/php4/etc/php.ini
找到如下一行:
;error_log = syslog
将这行前边的分号删除,即表示将php的错误打印到/var/log/message
如此,程序即可正常运行
相关阅读 更多 +
排行榜 更多 +