我已经尝试了三天,以便在PHP中启用错误报告。 我已经使用 ini_set('display errors' 1);
函数一段时间了,直到我尝试连接到数据库;它没有用。 现在,我已经启用了error_reporting
、display_startup_errors
、log_errors
,而对错误报告没有任何影响。 我已经更改了所有五个配置文件(开发ini,生产ini,php.ini位于php/7.0/cli,php/7.0/fpm中的文件,甚至是apache2中的文件(即使我正在运行nginx(
我开始怀疑自己的能力,非常感谢任何帮助。
编辑:我已经在我的文件中使用了上面描述的ini_set功能,它一直工作到我尝试连接到数据库。 我已经确认我已经为 phpinfo(( 函数目录路径中描述的 php.ini 文件启用了错误报告。 没有任何效果。
因为没有人特别透露答案,所以我只需要自己发布。
我在此目录中发现了错误.log文件(确实记录了我的 Nginx 服务器上的所有错误(:/var/log/nginx/error.log
希望这也可以帮助其他人使用 Nginx,但我仍然不明白为什么错误没有显示在浏览器中。 我认为Nginx的天性是让一切都变得非常复杂。
也许我应该使用 Apache 进行开发,然后在我有更多经验时将其移植到 Nginx 中——这只是对其他正在进入这个领域的人的一些想法。
我只是想对此进行更新:自从从 PHP 7.0.2 <= 7.0.3 升级以来,我现在能够看到应该显示的错误。
编辑:不要删除该日志文件的内容,它将搞砸整个错误报告。我现在什么都没回来了。–
报告自身错误
ini_set('display_errors', 1);
或display_errors
只是允许PHP输出错误 - 对调试很有用,强烈建议在生产环境中禁用。它通常包含您永远不希望用户看到的信息。
error_reporting(E_ALL);
或error_reporting
只需准确设置显示哪些错误。
设置其中一个并不能保证会显示错误。您必须同时设置两者才能在屏幕上实际看到错误。
至于在你的PHP配置中永久设置它,error_reporting
的默认值是E_ALL&~E_NOTICE&~E_STRICT和~E_DEPRECATED。也就是说,这个变量不应该需要改变。看这里:
http://php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
至于显示错误,请参阅此处:
http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors
根据需要将"display_errors"的配置值设置为 stderr
或 stdout
。
只需在php.ini
文件中更改这些变量,您就会变得金光闪闪。绝对确保display_errors
和error_reporting
都设置为令人满意的值。仅设置error_reporting
并不能保证您看到要查找的错误!
错误报告适用于除连接到我的数据库外的任何地方!
如果您在需要的除数据库连接之外的所有地方都看到错误,则只需执行一些错误捕获即可。如果是 PDO,请执行以下操作:
try {
$this->DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$this->DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$STH = $this->DBH->prepare("INSERT INTO `" . $this->table . "` ($fs) value ($ins) $up");
$STH->execute($data);
$id = $this->DBH->lastInsertId();
$this->closeDb();
return $id;
} catch(PDOException $e) {
echo $e->getMessage();
}
只是我的框架中的一个片段。当然,您必须根据自己的喜好进行更改,但您应该能够在那里获得大致的想法。他们的关键是这里的这部分:
try {
//DB Stuff
} catch(PDOException $e) {
echo $e->getMessage();
}
<小时 />我仍然没有看到错误
如果您已完成我在此处列出的两个操作,但仍然遇到问题,则您的问题与启用错误报告无关。提供的代码将显示数据库连接本身和 PHP 代码内部的错误。如果这没有显示您正在追逐的错误,那么您一定有一个完全不同的问题。
您可能需要对您所追逐的内容以及期望看到的内容进行更多的描述。
尝试:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
它会帮助你。 更改参数的值在文件/etc/php/7.0/fpm/pool.d/www.conf 中(例如,默认情况下禁用的值display_errors(
我可以在/var/log/php7.4-fpm.log
中找到错误