我正在运行PHP和nginx,我使用的是php.ini的生产版本。所以变量display_error设置为Off,这是我有理由这样做的原因。但对于某些文件,我需要启用错误报告。我使用ini_set打开错误报告。但是一个简单的代码片段如下:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
echo "hi"errorrrrr
?>
不会跟踪错误。它只返回HTTP 500内部服务器错误消息。我该怎么做才能启用错误报告?
答案 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