display_errors
和错误报告是 E_ALL
。我已经重启了我的 Apache web 服务器。我甚至在我的脚本顶部加入了这些行,但它甚至无法捕捉简单的解析错误。例如,我使用
"$"
声明变量,但我没有关闭语句";"
。但所有我的脚本在出现这些错误时都显示一个空白页,但我希望实际上在浏览器输出中看到错误。error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么需要做的吗?
display_errors
和错误报告是 E_ALL
。我已经重启了我的 Apache web 服务器。"$"
声明变量,但我没有关闭语句";"
。但所有我的脚本在出现这些错误时都显示一个空白页,但我希望实际上在浏览器输出中看到错误。error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么需要做的吗?
这对我来说总是有效的:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
display_errors = on
php_flag display_errors 1
请注意,上述建议仅适用于开发环境。在实际运行的网站上,必须进行
display_errors = off
log_errors = on
然后你就能在错误日志中看到所有的错误。参见在哪里找到PHP错误日志
如果是AJAX调用,在开发服务器上,打开开发者工具(F12),然后选择网络选项卡。 然后发起你想要查看结果的请求,它将出现在网络选项卡中。点击它,然后选择响应选项卡。你将在那里看到精确的输出。
在生产服务器上,同样只需检查错误日志。
.htaccess
文件中使用 php_flag display_errors 1
来显示错误信息。 - Ryan TaylorPHP.ini
文件,但只有少数人拥有.htaccess
文件...编辑他们的PHP.ini文件是另一回事。大多数公共服务器允许使用自定义php.ini文件。 - Angry 84在运行时启用错误输出的同一文件中无法捕获解析错误,因为它在实际执行任何操作之前对文件进行解析(并且由于在此期间遇到错误,它不会执行任何操作)。 您需要更改实际的服务器配置,以便打开 display_errors 并使用适当的 error_reporting 级别。 如果您没有访问 php.ini,则可以根据服务器使用 .htaccess 或类似功能。
此问题 可能提供额外的信息。
在你的 php.ini 文件中:
display_errors = on
然后重新启动你的 Web 服务器。
sudo service apache2 restart
- Peter Krausssudo apachectl -k restart
。 - Peaini_get('display_errors')
,它返回一个空字符串(表示已关闭)。是的,我检查过确保它是配置文件中唯一的行。该设置以某种方式被覆盖,我无法找出原因,这让我疯狂。是的,我搜索了/etc/php.d/
中的所有内容,它也不是那些文件之一。是的,我也重启了Web服务器。不,.htaccess
文件中没有任何东西。我使用的是PHP 7.4.6。 - cazort要显示所有错误,您需要:
1. 在您从浏览器调用的 PHP 脚本中(通常是 index.php
)添加以下行:
error_reporting(E_ALL);
ini_set('display_errors', '1');
2. (a) 确保此脚本没有语法错误
— 或者 —
2. (b) 在你的 php.ini
文件中设置 display_errors = On
否则,它甚至无法运行这两行代码!
您可以通过在命令行下运行以下命令来检查脚本的语法错误:
php -l index.php
如果您从另一个PHP脚本中包含该脚本,则它将在已包含的脚本中显示语法错误。 例如:index.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
一些网站托管服务提供商允许您在.htaccess
文件中更改PHP参数。
您可以添加以下行:
php_value display_errors 1
我也遇到了和你一样的问题,但是这个解决方案解决了它。警告:以下答案的事实内容是错误的。在错误处理方面没有任何更改,未捕获异常会像其他错误一样显示出来。建议使用该方法时要谨慎,因为它无条件输出错误,尽管设置了“display_error”,可能会通过在现场向外部人员透露敏感信息而构成威胁。
您可能会发现,在 PHP 7 中,“错误报告”或“显示错误”的所有设置似乎都不起作用。这是因为错误处理已经发生了变化。请尝试使用以下方法:
try{
// Your code
}
catch(Error $e) {
$trace = $e->getTrace();
echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}
或者,为了一次捕获异常和错误(这与 PHP 5 不兼容):
try{
// Your code
}
catch(Throwable $e) {
$trace = $e->getTrace();
echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}
try{} catch() {}
代码,我甚至不想去想那将会是多么混乱的情况。 - vdegenne使用:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
这是书写的最佳方式,但语法错误会导致输出为空白,因此请使用控制台检查语法错误。调试PHP代码的最佳方式是使用控制台;运行以下内容:
php -l phpfilename.php
这将起作用:
<?php
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);
在您的PHP文件所在的文件夹中创建名为php.ini的文件。
在php.ini中添加以下代码(这是一个简单的错误显示代码):
display_errors = on
display_startup_errors = on
$_REQUEST
参数启用它们)的人来说,这两行代码大多数情况下都能够奏效。 - brandonscript