我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。
我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么要做?
我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。
我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么要做?
当前回答
在index.php文件中设置:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
其他回答
已接受,包括额外选项。在我的DEVELOPMENT apache vhost(.htaccess,如果您可以确保它不会进入生产环境)的PHP文件中:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
然而,这并不能使PHP显示解析错误-显示这些错误的唯一方法是使用以下行修改PHP.ini:
display_errors = on
(如果您没有访问php.ini的权限,那么在.htaccess中输入这一行也可以):
// I've added some extra options that set E_ALL as per https://www.php.net/manual/en/errorfunc.configuration.php.
php_flag log_errors on
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2147483647
php_value error_log /var/www/mywebsite.ext/logs/php.error.log
这对我来说总是有效的:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
然而,这并不能使PHP显示同一文件中发生的解析错误-显示这些错误的唯一方法是使用以下行修改PHP.ini:
display_errors = on
(如果您没有访问php.ini的权限,那么在.htaccess中输入这一行也可以):
php_flag display_errors 1
请注意,上述建议仅适用于开发环境。在实时站点上,display_errors必须设置为0,而log_errors设置为1。然后,您将能够在错误日志中看到所有错误。
在AJAX调用的情况下,在开发服务器上打开DevTools(F12),然后打开Network选项卡。然后启动您希望看到的结果的请求,它将显示在“网络”选项卡中。单击它,然后单击“响应”选项卡。在那里您将看到确切的输出。在实时服务器上,只需检查错误日志即可。
如果安装了Xdebug,则可以通过以下设置覆盖每个设置:
xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;
强制显示错误类型:int,默认值:0,在Xdebug中引入>=2.3如果设置设置为1,则无论PHP的display_errors的设置是什么。强制错误报告类型:int,默认值:0,在Xdebug中引入>=2.3此设置是位掩码,如error_reporting。此位掩码将与error_reporting表示的位掩码进行逻辑“或”运算,以将错误显示到dermine。此设置只能在php.ini中进行,允许您强制显示某些错误,无论应用程序如何使用ini_set()。
要显示所有错误,您需要:
1.在从浏览器(通常是index.PHP)调用的PHP脚本中包含以下行:
error_reporting(E_ALL);
ini_set('display_errors', '1');
2.(a)确保此脚本没有语法错误
—or—
2.(b)在php.ini中设置display_errors=打开
否则,它甚至无法运行这两条线!
您可以通过运行(在命令行)检查脚本中的语法错误:
php -l index.php
如果包含另一个PHP脚本中的脚本,那么它将在包含的脚本中显示语法错误。例如:
索引php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Any syntax errors here will result in a blank screen in the browser
include 'my_script.php';
my_script.php
adjfkj // This syntax error will be displayed in the browser
为了显示解析错误,可以使用技巧:使用include,而不是在php.ini中设置display_errors。
以下是三段代码:
文件:tst1.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
// Missing " and ;
echo "Testing
当直接运行此文件时,如果php.ini中将display_errors设置为0,它将不显示任何内容。
现在,试试这个:
文件:tst2.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include ("tst3.php");
文件:tst3.php
<?php
// Missing " and ;
echo "Testing
现在运行设置错误报告的tst2.php,然后包含tst3。您将看到:
分析错误:语法错误,意外的文件结尾,第4行tst3.php中需要变量(T_variable)或${(T_DOLLAR_OPEN_CURLY_BRACES)或{$(T_CURLY_OPEN)