PHP设置error_log对程序的影响
2008-01-22 16:30:45 来源:WEB开发网核心提示:问题 在别的服务器上可以运行的PHP程序 上传到Prima(最完善的虚拟主机管理系统) for Linux系统上 或者输出大量php错误,或者直接报告500服务器错误 如果打开CGIwrap的debug模式,PHP设置error_log对程序的影响,可看到大量数据库和php错误 例如wordpress-2.3.2程序
问题
在别的服务器上可以运行的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(Unix平台最流行的WEB服务器平台)用模块方式结合,则这个错误会被隐藏掉
因为作为apache(Unix平台最流行的WEB服务器平台)一部分的php运行是由httpd完成的,自身没有地方输出
如果是使用CGI方式,则这部分错误信息都会直接打在当前屏幕上
所以,在正常页面上方,就会看到数条错误信息
如果错误信息出现的位置是第一行,此前没有任何html被输出
则apache(Unix平台最流行的WEB服务器平台)还会返回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(Unix平台最流行的WEB服务器平台)用模块方式结合,则这个错误会被隐藏掉
因为作为apache(Unix平台最流行的WEB服务器平台)一部分的php运行是由httpd完成的,自身没有地方输出
如果是使用CGI方式,则这部分错误信息都会直接打在当前屏幕上
所以,在正常页面上方,就会看到数条错误信息
如果错误信息出现的位置是第一行,此前没有任何html被输出
则apache(Unix平台最流行的WEB服务器平台)还会返回500服务器错误,实际错误都将被隐藏
为了解决这个问题,需要将php.ini中的error_log全局log打开
这样使得CGI方式的PHP会将报错写入到日志文件中,就不会发生这样的错误了
以AS4系统使用PHP4为例
编辑/usr/local/php4/etc/php.ini
找到如下一行:
;error_log = syslog
将这行前边的分号删除,即表示将php的错误打印到/var/log/message
如此,程序即可正常运行
更多精彩
赞助商链接