提问人:ErJab 提问时间:3/16/2010 最后编辑:pnutsErJab 更新时间:11/19/2015 访问量:2377
PHP 根本不会返回错误
PHP does not return errors at all
问:
我正在运行 PHP 和 nginx,并且使用 php.ini 的生产版本。因此,变量 display_error 设置为 Off,我有充分的理由希望这样做。但是对于某些文件,我需要启用错误报告。我使用ini_set来打开错误报告。但是一个简单的代码片段,例如:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
echo "hi"errorrrrr
?>
不跟踪错误。它只返回 HTTP 500 内部服务器错误消息。我应该怎么做才能启用错误报告?
答:
您应该能够将所有错误记录到文件中。您甚至可以使用将错误写入特定文件,如果这会让您的生活更轻松。log_errors
error_log
评论
log_errors
php.ini
答案是肯定的如果发生语法错误,PHP 将不会执行这些指令。因为这个脚本甚至没有开始执行!因为它在解析阶段失败了。
您必须使用另一种方法来设置这些指令,尽管这可能很棘手。看起来你的PHP是作为CGI而不是apache模块运行的,所以,设置ini指令的唯一方法是编辑php.ini本身。
可以肯定的是,请运行并查看它对服务器 API 的说明。phpinfo();
无论如何,每次看到 500 错误时,您都必须检查 Apache 的error_log,以找出肯定发生了什么。
尝试在文件中设置 ini 设置。.htaccess
如果您将设置放在由于语法错误而无法编译的 PHP 文件中,则这些设置将不会生效。
如果你根本无法改变 php 的配置,你可以做一个技巧。创建一个新文件,其中包含包含错误的文件。在执行包含之前,请设置所需的配置。
例
error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';
然后只执行包装脚本。这之所以有效,是因为在脚本最终因解析错误而死亡之前,将首先计算 include 前面的语句。
我一直在寻找的答案是在这个答案的评论中:PHP根本不会返回错误
它不起作用的原因 首先是,因为有 文件中的语法错误,PHP 会 根本不解析它。因此,它没有 执行log_errors调用,并具有 以依赖php.ini中的设置。
– cmptrgeekken Mar 16 '10 at 18:16
下一个:显示不支持的自定义属性的错误
评论