rya*_*zec 55 php apache error-handling logging
我有一个问题,当我有一个PHP应用程序返回内部服务器错误(500),但错误日志中没有显示任何内容.
现在我知道我正在尝试运行的错误,我知道我已经丢失了一些文件,但是什么不是,但是应该在apache错误日志中显示一些内容(否则我应该怎么知道我到底错过了什么).
我创建了一个测试脚本是在同一个vhost配置下的错误,并且这些错误显示正常,所以一切似乎都配置为php/apache.是否有某些php错误确实显示在错误日志中(php配置为显示任何类型的通知,警告,错误,致命错误等...)?
这是在ubunut 10.04上运行的标准apache和来自ubuntu repo的php和apt-get.
Luc*_*c M 51
扫描您的源文件以查找@.
目前,"@"错误控制运算符前缀甚至会禁用将终止脚本执行的严重错误的错误报告.除此之外,这意味着如果你使用"@"来抑制来自某个函数的错误,并且它不可用或者输入错误,那么脚本就会在那里死亡而没有任何关于原因的指示.
也许某事会关闭错误输出.(我知道您试图说其他脚本正确地将错误输出到错误日志?)
您可以通过确定脚本退出脚本的位置来开始调试脚本(首先添加echo 1; exit;到脚本的第一行并检查浏览器是否输出1然后将该行向下移动).
将以下内容复制并粘贴到新.htaccess文件中,并将其放置在网站的根文件夹中:
php_flag display_errors on
php_flag display_startup_errors on
Run Code Online (Sandbox Code Playgroud)
错误将直接显示在您的页面中。
这是快速调试的最佳方法,但是不要长时间使用,因为这可能会违反安全性。
如果您仍然有 500 错误并且没有日志,您可以尝试从命令行执行:
php -f file.php
Run Code Online (Sandbox Code Playgroud)
它不会像在浏览器(来自服务器)中完全一样工作,但如果您的代码中有语法错误,您将在控制台中看到错误消息。
在过去,我在两种情况下没有错误日志:
php_error_log文件..htaccess错误(例如错误的重写模块设置)而发生错误500 .在这种情况下,错误会记录到Apache error_log文件中.