apache-php返回500错误但没有错误日志
我有一个返回内部服务器错误(500)的php应用程序时出现问题,但错误日志中未显示任何内容。
现在,我知道我要运行的内容存在错误,我知道我缺少一些文件,但没有丢失,但是应该在apache错误日志中显示某些内容(否则我应该如何确切知道自己所缺少的内容)。
我创建了一个测试脚本,该脚本在相同的vhost配置下出错,并且这些错误显示得很好,因此一切似乎都已正确配置到php / apache。 是否有某些php错误确实显示在错误日志中(php配置为显示任何类型的通知,警告,错误,致命错误等)?
这是在ubuntu 10.04上使用标准apache和ubuntu repo中带有apt-get的php运行的。
11个解决方案
51 votes
扫描您的源文件以找到@。
从php文档站点
目前,“ @”错误控制运算符前缀甚至会禁用 错误报告将终止脚本的严重错误 执行。 除其他外,这意味着如果您使用“ @” 抑制某个功能的错误,或者它不可用 或输入错误,脚本将在那里死掉而没有 指示原因。
Luc M answered 2020-01-06T06:54:34Z
6 votes
也许某些东西会关闭错误输出。 (我了解您试图说其他脚本正确地将其错误输出到错误日志?)
您可以通过确定脚本退出脚本的位置来开始调试脚本(首先在脚本的第一行中添加echo 1; exit;,然后检查浏览器是否输出1,然后将该行向下移动)。
akirk answered 2020-01-06T06:55:00Z
6 votes
将以下内容复制并粘贴到新的.htaccess文件中,并将其放置在网站的根文件夹中:
php_flag display_errors on
php_flag display_startup_errors on
错误将直接显示在您的页面中。
这是快速调试的最佳方法,但是不要长时间使用,因为这可能会违反安全性。
Meloman answered 2020-01-06T06:55:28Z
5 votes
过去,在两种情况下我没有错误日志:
运行Apache的用户无权修改.htaccess文件。
由于.htaccess的配置错误(例如,错误的重写模块设置)而发生错误500。 在这种情况下,错误将记录到Apache error_log文件中。
sgnsajgon answered 2020-01-06T06:55:57Z
3 votes
对于Symfony项目,请务必检查项目的应用程序/日志中的文件
有关此帖子的更多详细信息:
如何在Symfony 2中调试500错误
顺便说一句,其他框架或CMS共享这种行为。
Balmipour answered 2020-01-06T06:56:30Z
2 votes
这是错误可能不可见的另一个原因:
我遇到过同样的问题。 就我而言,我是从生产环境复制源的。 因此,将在index.php中定义的ENVIRONMENT变量设置为'production'。这导致将error_reporting设置为0(无日志记录)。 只需将其设置为'development',您就应该开始在apache日志中看到错误消息。
原来500是由于数据库配置中缺少半冒号:-)
Aswin Kumar answered 2020-01-06T06:57:00Z
2 votes
发生在我身上的另一种情况是,我对某些页面进行了CURL处理,并出现内部服务器错误,即使启用了所有错误报告,apache日志中也没有任何内容。
我的问题是在我设置的CURL中curl_setopt($CR, CURLOPT_FAILONERROR, true);
然后,该错误并没有向我显示我的错误,尽管发生了错误,但这是因为错误发生在框架级别而不是PHP级别,因此它没有出现在日志中。
eric.itzhak answered 2020-01-06T06:57:29Z
0 votes
您需要启用PHP错误日志。
这是由于当您遇到php错误时,Web服务器中出现一些随机故障,它引发了500个内部错误(我有同样的问题)。
如果查看PHP错误日志,则应该找到解决方案。
在文档中查看如何在php.ini中启用它
Neal answered 2020-01-06T06:58:04Z
0 votes
确保您的文件权限正确。 如果apache没有读取文件的权限,那么它将无法写入日志。
Johnny Ruin answered 2020-01-06T06:58:24Z
0 votes
如果仍然有500错误并且没有日志,则可以尝试从命令行执行:
php -f file.php
它不能完全像在浏览器中一样(从服务器)工作,但是如果代码中存在语法错误,则您将在控制台中看到错误消息。
jcubic answered 2020-01-06T06:58:49Z
0 votes
当我遇到问题时,发生的事情是该站点使用了过多的内存,因此我猜测它无法写入错误日志或显示错误。 为了清楚起见,这是一个Wordpress网站。 升高服务器上的内存限制再次显示了该站点。
John-Henry answered 2020-01-06T06:59:10Z