php返回500错误但没有错误日志

时间:2011-08-22 14:30:51

标签: php apache logging error-handling

当我的php应用程序返回内部服务器错误(500)时,我遇到了问题,但错误日志中没有显示任何内容。

现在我知道我正在尝试运行的内容有错误,我知道我丢失了一些文件,但是什么不是,但是应该在apache错误日志中显示(否则我应该怎么知道我到底错过了什么)

我在相同的vhost配置下创建了一个测试脚本是错误,并且这些错误显示正常,所以一切似乎都配置为php / apache。是否有某些php错误确实显示在错误日志中(php配置为显示任何类型的通知,警告,错误,致命错误等...)

这是在ubunut 10.04上运行的标准apache和来自ubuntu repo的php和apt-get。

12 个答案:

答案 0 :(得分:50)

扫描您的源文件以查找@

From php documentation site

  

目前,“@”错误控制运营商前缀甚至会禁用   错误报告将终止脚本的严重错误   执行。除此之外,这意味着如果你使用“@”来   抑制某个功能的错误,并且它不可用   或者错误输入,脚本将在那里死亡   指示为什么。

答案 1 :(得分:6)

也许有些东西会关闭错误输出。 (我知道您试图说其他脚本正确地将错误输出到错误日志?)

您可以通过确定脚本退出脚本​​的位置来开始调试脚本(首先在脚本的第一行添加echo 1; exit;并检查浏览器是否输出1然后将该行向下移动)。

答案 2 :(得分:5)

过去,我在两种情况下没有错误日志:

  1. 运行Apache的用户无权修改php_error_log文件。
  2. 由于.htaccess配置错误导致错误500,例如错误的重写模块设置。在这种情况下,会将错误记录到Apache error_log文件中。

答案 3 :(得分:5)

将以下内容复制并粘贴到新的.htaccess文件中,并将其放在网站的根文件夹中:

php_flag  display_errors                  on
php_flag  display_startup_errors          on

错误将直接显示在您的页面中。

这是快速调试的最佳方式,但长时间不使用,因为它可能是安全漏洞。

答案 4 :(得分:3)

对于Symfony项目,请务必检查项目'app app / logs

中的文件

此帖更多详情:
How to debug 500 Error in Symfony 2

不过,其他框架或CMS都有这种行为。

答案 5 :(得分:2)

以下是可能无法看到错误的另一个原因:

我有同样的问题。就我而言,我从生产环境中复制了源代码。因此,ENVIRONMENT中定义的index.php变量设置为'production'。这导致error_reporting设置为0(无日志记录)。只需将其设置为'development',您就应该开始在apache日志中看到错误消息。

原来500是由于数据库配置中缺少半冒号: - )

答案 6 :(得分:2)

发生在我身上的另一个案例是,我对我的某些页面进行了CURL,并且内部服务器出错并且apache日志中没有任何内容,即使我启用了所有错误报告。

我的问题是在我设置的CURL中 curl_setopt($CR, CURLOPT_FAILONERROR, true);

然后没有向我显示我的错误,虽然有一个错误,但这是因为错误发生在框架级别而不是PHP错误,所以它没有出现在日志中。

答案 7 :(得分:0)

您需要启用PHP错误日志。

这是由于当您遇到php错误时Web服务器中出现一些随机故障,它会引发500内部错误(我有同样的问题)。

如果你查看PHP错误日志,你应该找到你的解决方案。

see here in the doc of how to enable it in the php.ini

答案 8 :(得分:0)

确保您的文件权限正确无误。如果apache没有读取文件的权限,则无法写入日志。

答案 9 :(得分:0)

如果您仍然有500错误并且没有日志,则可以尝试从命令行执行:

php -f file.php

它不能完全像在浏览器中一样(从服务器)工作,但是如果代码中存在语法错误,您将在控制台中看到错误消息。

答案 10 :(得分:0)

当这是一个问题时,对我来说发生的事情是该站点使用了过多的内存,因此我猜测它无法写入错误日志或显示错误。为了清楚起见,这是一个Wordpress网站。提高服务器上的内存限制再次显示了该站点。

答案 11 :(得分:0)

已解决 我为此苦苦挣扎,后来意识到我正在使用 PHP 5.6 ,所以我升级到了 PHP 7.0 ,然后我发布了发表的评论。 git 用于冲突代码。我在代码 <<<<<<<< / 中找到了类似的内容,但解决了。