我检查了我的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);
还有什么要做?
当前回答
已接受,包括额外选项。在我的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
其他回答
要显示所有错误,您需要:
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
如果尽管遵循了以上所有答案(或者您无法编辑php.ini文件),但仍然无法收到错误消息,请尝试创建一个新的php文件来启用错误报告,然后将问题文件包括在内。如:
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('problem_file.php');
尽管在php.ini文件中正确设置了所有内容,但这是我唯一能够捕获名称空间错误的方法。我的确切设想是:
//file1.php
namespace a\b;
class x {
...
}
//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
...
}
如果是在命令行上,则可以使用-display_errors=1运行php以覆盖php.ini中的设置:
php -ddisplay_errors=1 script.php
<?php
// Turn off error reporting
error_reporting(0);
// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Report all errors
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);
// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?>
当您的站点处于活动状态时,出于安全原因,php.ini文件应该禁用display_errors。但是,对于开发环境,可以启用display_errors进行故障排除。
只需写下:
error_reporting(-1);