3

我正在运行 ubuntu 10.04 + nginx + php-fpm 5.4

如果我display_errors = On在 php.ini 中设置所有错误都会打印出来。如果相反,我将其设置为关闭,然后使用 ini_set('display_errors, '1'); 直接在脚本中它们也会显示,但不会显示解析错误,只是一个空白页。我也尝试使用 error_reporting 和 E_STRICT,但我找不到方法!

4

5 回答 5

15

如果你禁用display_errorsphp.ini,然后在你的 PHP 脚本中启用它ini_set()它只会在包含该ini_set()调用的行被执行后启用。

解析错误甚至在 PHP 脚本启动之前就发生了——在解析 PHP 文件时(因此称为“解析错误”名称)

这意味着它们发生在您ini_set()甚至有机会被执行之前 - 这意味着,在您的情况下,display_errors当解析错误发生时未启用;因此,您不会得到任何显示。

于 2012-05-19T17:35:09.387 回答
8

在回答这个问题多年后,我在这里,但我找到了解决这个问题的方法。

对于我正在编写的脚本,我创建了第二个脚本,其中包含 ini_set() 指令,然后是我真正正在处理的脚本的包含。

与,这里是 test_run.php

<?php

ini_set('display_errors', '1');
ini_set('error_reporting', E_ALL);

include('./my_script.php');

?>
于 2017-04-21T22:34:14.893 回答
2

除了打开display_errors,您还可以查看错误日志。通常,运行 Ubuntu + apache,您的错误日志将位于/var/log/apache2/error_log. 要实时观看正在发生的事情,您可以运行类似tail -f /var/log/apache2/error_log.

有时这比使用 php 设置更简单。

于 2012-05-19T17:48:34.510 回答
0

**您必须在 php.ini 文件中启用错误显示 **

我已添加(未注释)以下行,现在正在显示解析错误。

error_reporting 
Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 
Development Value: E_ALL
Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
于 2021-10-06T16:29:56.630 回答
-1

试试error_reporting(E_ALL);。或文档

于 2012-05-19T17:35:11.400 回答