如何让PHP显示错误而不是给我500内部服务器错误[重复]

How can I make PHP display the error instead of giving me 500 Internal Server Error [duplicate]

提问人:Rob 提问时间:4/22/2010 更新时间:8/17/2021 访问量:273245

问:

这在以前从未发生过。通常它会显示错误,但现在它只会给我一个 500 内部服务器错误。当然,以前,当它显示错误时,它是不同的服务器。现在我在一个新的服务器上(我有完全的root,所以如果我需要在php.ini中的某个地方配置它,我可以。或者也许是Apache的东西?

我一直在忍受它,只是将文件传输到我的另一台服务器并在那里运行它以查找错误,但这变得太乏味了。有没有办法解决这个问题?

阿帕奇PHP

评论

3赞 Frank Farmer 4/22/2010
这听起来像是apache问题,而不是PHP问题。每当Apache遇到配置问题(例如.htaccess中的语法错误)时,它都会抛出500。检查 apache 错误日志中是否有错误消息。

答:

264赞 awgy 4/22/2010 #1

检查文件中的 和设置。它们应分别设置为 和 (尽管您不应该在生产服务器上使用,因此请禁用它并在部署时/部署它时改用它)。您还可以在脚本的开头更改这些设置(除了 ),以便在运行时设置它们(尽管您可能不会以这种方式捕获所有错误):error_reportingdisplay_errorsdisplay_startup_errorsphp.iniE_ALL"On"display_errorslog_errorsdisplay_startup_errors

error_reporting(E_ALL);
ini_set('display_errors', 'On');

之后,重新启动服务器。

评论

1赞 Pacerier 7/23/2013
我们如何关闭display_errors,但让 PHP 显示 200 或 404 而不是 500?
1赞 Czar Pino 8/16/2014
不确定它是否是在 2010 年,但是,您不需要在 2014 年重新启动服务器(除非使用像 APC 这样的操作码缓存)。
1赞 Kellen Stuart 10/13/2017
即使做了所有这些,我仍然得到 500 错误......也许它来自IIS?
2赞 Fusseldieb 11/22/2017
有时,Linux 环境中的错误权限也会导致 500 错误。只是提醒一下。
1赞 Tom 1/16/2019
如果无法修改php.ini,则可以添加一个.htaccess文件php_flag display_errors 1
17赞 dtbarne 8/4/2014 #2

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

评论

3赞 Eduardo Mello 3/4/2015
我实际上在apache上缺少一个模块。我通过查看错误日志(ubuntu 的默认值是 /var/log/apache2/error.log)得到了它
4赞 Hao Nguyen 4/4/2016 #3

启用从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

这有助于我找到有错别字的行。

28赞 Aaron 5/25/2016 #4

使用命令行中的“L”输出语法错误,该错误可能导致 PHP 抛出状态 500 错误。它将输出如下内容:php -l <filename>

PHP Parse error: syntax error, unexpected '}' in <filename> on line 18

评论

4赞 Source Matters 3/19/2017
这真的帮了我大忙!尾随我的错误日志没有产生任何结果,但这个 gem 运行良好并显示我的语法错误和行号。正在调试类文件。谢谢!
0赞 Petro 3/7/2020
这是真正的答案,对于我们这些懒惰的人来说既快捷又简单:P
0赞 Matthew Lock 8/17/2021
在Windows上,我安装了Xammp,因此我可以在我的机器上使用php.exe来执行此操作
10赞 Max 9/9/2016 #5

小心检查是否

display_errors

error_reporting

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

我的开发服务器在升级到 Kubuntu 16.04 - 我已经检查了 php.ini 很多次了...原来有一个diplay_errors=关闭;大约100行低于我的

display_errors = on;

所以请记住最后一个很重要!

0赞 WoodrowShigeru 3/6/2017 #6

如果所有其他方法都失败了,请尝试将所有文件和目录“移开”并逐个添加。

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

6赞 von verletzt 3/21/2017 #7

尽量不要去

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

MAMP > bin > php > [your PHP version] > conf > php.ini

并在那里改变它,它对我有用......