Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何让PHP显示错误,而不是给出500个内部服务器错误_Apache_Php - Fatal编程技术网

Apache 如何让PHP显示错误,而不是给出500个内部服务器错误

Apache 如何让PHP显示错误,而不是给出500个内部服务器错误,apache,php,Apache,Php,这以前从未发生过。通常它会显示错误,但现在它只显示500个内部服务器错误。当然以前,当它显示错误时,是不同的服务器。现在我在一个新的服务器上(我有完整的根目录,所以如果我需要在php.ini中的某个地方配置它,我可以),或者它可能与Apache有关 我一直在忍受它,只是将文件传输到我的另一台服务器并在那里运行它来查找错误,但这太单调了。是否有办法解决此问题?检查php.ini文件中的错误报告、显示错误和显示启动错误设置。它们应该分别设置为E_ALL和“On”(尽管您不应该在生产服务器上使用显示错

这以前从未发生过。通常它会显示错误,但现在它只显示500个内部服务器错误。当然以前,当它显示错误时,是不同的服务器。现在我在一个新的服务器上(我有完整的根目录,所以如果我需要在php.ini中的某个地方配置它,我可以),或者它可能与Apache有关


我一直在忍受它,只是将文件传输到我的另一台服务器并在那里运行它来查找错误,但这太单调了。是否有办法解决此问题?

检查
php.ini
文件中的
错误报告
显示错误
显示启动错误
设置。它们应该分别设置为
E_ALL
“On”
(尽管您不应该在生产服务器上使用
显示错误,所以如果部署它,请禁用此选项并使用
记录错误
)。您还可以在脚本开始时更改这些设置(除了
显示\u启动\u错误
),以便在运行时进行设置(尽管您可能无法通过这种方式捕获所有错误):


之后,重新启动服务器。

值得注意的是,如果您的错误是由于.htaccess引起的,例如缺少重写模块,您仍然会看到500个内部服务器错误。

启用PHP代码中的错误显示对我来说不起作用。在我的例子中,使用NGINX和PHP-FMP,我使用grep跟踪日志文件。例如,我知道文件名mycode.php导致错误500,但不知道是哪一行。在控制台中,我使用以下命令:

/var/log/php-fpm# cat www-error.log | grep mycode.php
我有输出:

[04-Apr-2016 06:58:27] PHP Parse error:  syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458
这有助于我找到输入错误所在的行。

使用命令行中的“php-l”(这是一个“l”)输出可能导致php抛出status 500错误的语法错误。它将输出如下内容:


PHP解析错误:语法错误,第18行出现意外“}”,请仔细检查

display_errors

在ini文件的其他位置处于活动状态(不是注释)

我的开发服务器在升级到后拒绝显示错误 Kubuntu 16.04-我已经多次检查php.ini。。。结果发现有一个diplay_errors=off;大约在我下面100行

display_errors = on;

所以记住最后一个很重要

如果所有其他操作都失败,请尝试将所有文件和目录“移开”(即在bash中)并逐个添加回去

我刚刚发现我的.htaccess文件引用了一个不存在的.htpasswd文件。(傻)

尽量不要去

MAMP > conf > [your PHP version] > php.ini
但是


在那里进行更改,它对我起了作用…

这听起来像是apache的问题,而不是PHP的问题。Apache在任何时候出现配置问题(如.htaccess中的错误语法)时都会抛出500。查看您的apache错误日志以获取错误消息。如何关闭display_errors,而让PHP display 200或404代替500?不确定是在2010年,但您不需要在2014年重新启动服务器(除非使用APC之类的操作码缓存)。即使完成了所有这些,我仍然会收到500错误。。。也许它来自IIS?有时Linux环境中的错误权限也会导致500错误。提醒一下。如果您不能修改php.ini,您可以添加一个.htaccess文件,其中包含
php\u flag display\u errors 1
I实际上缺少apache上的一个模块。我通过查看错误日志(ubuntu的默认值是/var/log/apache2/error.log)了解到了这一点,这真的帮了我大忙!跟踪我的错误日志不会产生任何结果,但是这个gem工作得很好,并显示了我的语法错误和行号。正在调试类文件。谢谢这才是真正的答案,对我们这些懒惰的人来说又快又容易:P
display_errors = on;
MAMP > conf > [your PHP version] > php.ini
MAMP > bin > php > [your PHP version] > conf > php.ini