PHP根本不会返回错误

时间:2010-03-16 15:58:06

标签: php error-reporting ini-set

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

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

echo "hi"errorrrrr
?>

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

首先,请运行phpinfo();并查看Server API的内容。

无论如何,每次看到500错误时都要检查apache的error_log,找出确实发生的事情。

答案 2 :(得分:1)

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

如果将设置放在由于首先出现语法错误而无法编译的PHP文件中,则设置将不会保留。

答案 3 :(得分:1)

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

实施例

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

然后只需执行包装脚本。这是有效的,因为在脚本最终从解析错误中消失之前,将首先评估include之前的语句。

答案 4 :(得分:-1)

我正在寻找的答案在这个答案的评论中:PHP does not return errors at all

  

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

- cmptrgeekken 2010年3月16日18:16