当我的php应用程序返回内部服务器错误(500)时,我遇到了问题,但错误日志中没有显示任何内容。
现在我知道我正在尝试运行的内容有错误,我知道我丢失了一些文件,但是什么不是,但是应该在apache错误日志中显示(否则我应该怎么知道我到底错过了什么)
我在相同的vhost配置下创建了一个测试脚本是错误,并且这些错误显示正常,所以一切似乎都配置为php / apache。是否有某些php错误确实显示在错误日志中(php配置为显示任何类型的通知,警告,错误,致命错误等...)
这是在ubunut 10.04上运行的标准apache和来自ubuntu repo的php和apt-get。
答案 0 :(得分:50)
扫描您的源文件以查找@
。
目前,“@”错误控制运营商前缀甚至会禁用 错误报告将终止脚本的严重错误 执行。除此之外,这意味着如果你使用“@”来 抑制某个功能的错误,并且它不可用 或者错误输入,脚本将在那里死亡 指示为什么。
答案 1 :(得分:6)
也许有些东西会关闭错误输出。 (我知道您试图说其他脚本正确地将错误输出到错误日志?)
您可以通过确定脚本退出脚本的位置来开始调试脚本(首先在脚本的第一行添加echo 1; exit;
并检查浏览器是否输出1
然后将该行向下移动)。
答案 2 :(得分:5)
过去,我在两种情况下没有错误日志:
php_error_log
文件。.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
中的文件 不过,其他框架或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错误日志,你应该找到你的解决方案。
答案 8 :(得分:0)
确保您的文件权限正确无误。如果apache没有读取文件的权限,则无法写入日志。
答案 9 :(得分:0)
如果您仍然有500错误并且没有日志,则可以尝试从命令行执行:
php -f file.php
它不能完全像在浏览器中一样(从服务器)工作,但是如果代码中存在语法错误,您将在控制台中看到错误消息。
答案 10 :(得分:0)
当这是一个问题时,对我来说发生的事情是该站点使用了过多的内存,因此我猜测它无法写入错误日志或显示错误。为了清楚起见,这是一个Wordpress网站。提高服务器上的内存限制再次显示了该站点。
答案 11 :(得分:0)
已解决 我为此苦苦挣扎,后来意识到我正在使用 PHP 5.6 ,所以我升级到了 PHP 7.0 ,然后我发布了发表的评论。 git 用于冲突代码。我在代码 <<<<<<<< / 中找到了类似的内容,但解决了。