PHP 根本不会返回错误

PHP does not return errors at all

提问人:ErJab 提问时间:3/16/2010 最后编辑:pnutsErJab 更新时间:11/19/2015 访问量:2377

问:

我正在运行 PHP 和 nginx,并且使用 php.ini 的生产版本。因此,变量 display_error 设置为 Off,我有充分的理由希望这样做。但是对于某些文件,我需要启用错误报告。我使用ini_set来打开错误报告。但是一个简单的代码片段,例如:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

echo "hi"errorrrrr
?>

不跟踪错误。它只返回 HTTP 500 内部服务器错误消息。我应该怎么做才能启用错误报告?

php 错误报告 ini-set

评论

0赞 cmptrgeekken 3/17/2010
重复:stackoverflow.com/questions/2421814/php-not-displaying-errors/...

答:

1赞 Justin Ethier 3/17/2010 #1

您应该能够将所有错误记录到文件中。您甚至可以使用将错误写入特定文件,如果这会让您的生活更轻松。log_errorserror_log

评论

0赞 ErJab 3/17/2010
这也行不通!奇怪。我正在使用:ini_set(“error_log”, “/home/me/log.log”);ini_set(“log_errors”,真);是的,日志文件可由 Web 服务器进程写入。
0赞 Justin Ethier 3/17/2010
嗯......你有什么理由不直接在php.ini中启用log_errors吗?它对用户不可见,但会记录整个网站中的任何问题。
0赞 ErJab 3/17/2010
哦,是的,我能做到。谢谢。
0赞 ErJab 3/17/2010
但是,为什么这首先不起作用呢?有什么想法吗?
1赞 cmptrgeekken 3/17/2010
它首先不起作用的原因是,由于您的文件中存在语法错误,PHP 根本不会解析它。因此,它不执行调用,而必须依赖于 中的设置。log_errorsphp.ini
1赞 Your Common Sense 3/17/2010 #2

答案是肯定的如果发生语法错误,PHP 将不会执行这些指令。因为这个脚本甚至没有开始执行!因为它在解析阶段失败了。

您必须使用另一种方法来设置这些指令,尽管这可能很棘手。看起来你的PHP是作为CGI而不是apache模块运行的,所以,设置ini指令的唯一方法是编辑php.ini本身。

可以肯定的是,请运行并查看它对服务器 API 的说明。phpinfo();

无论如何,每次看到 500 错误时,您都必须检查 Apache 的error_log,以找出肯定发生了什么。

1赞 Alan Plum 3/17/2010 #3

尝试在文件中设置 ini 设置。.htaccess

如果您将设置放在由于语法错误而无法编译的 PHP 文件中,则这些设置将不会生效。

1赞 goat 3/17/2010 #4

如果你根本无法改变 php 的配置,你可以做一个技巧。创建一个新文件,其中包含包含错误的文件。在执行包含之前,请设置所需的配置。

error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';

然后只执行包装脚本。这之所以有效,是因为在脚本最终因解析错误而死亡之前,将首先计算 include 前面的语句。

-1赞 ErJab 2/27/2011 #5

我一直在寻找的答案是在这个答案的评论中:PHP根本不会返回错误

它不起作用的原因 首先是,因为有 文件中的语法错误,PHP 会 根本不解析它。因此,它没有 执行log_errors调用,并具有 以依赖php.ini中的设置。

– cmptrgeekken Mar 16 '10 at 18:16