4

我的虚拟主机提供商不提供启用错误报告的选项。所以尝试了 error_reporting(E_ALL); 但这也行不通。我尝试了以下脚本:

 <?php
 error_reporting(E_ALL);
 echo $test;
 ?>

如果我正确阅读了手册,那么这应该会生成错误通知。但这也行不通。我做错了什么还是获得新的虚拟主机提供商的唯一解决方案?

4

4 回答 4

11

error_reporting只是告诉 PHP 错误报告应该有多详细,但您还需要通过设置告诉它实际向浏览器显示错误

ini_set('display_errors', 1);
于 2012-04-11T09:32:13.530 回答
5

您可能想要对触发的错误做一些事情,例如记录它:

ini_set('error_log', '/path/to/php-error.log');

...和/或显示它:

ini_set('display_errors', true);

请在错误处理运行时配置中找到其他文档。


附录:该指令曾经被记录为布尔值,但现在不再如此。此外,由于display_errors指令和ini_set()的第二个参数都是string类型,因此在使用严格类型时,您将无法传递布尔值:

<?php
declare(strict_types=1);
ini_set('display_errors', true);

致命错误:未捕获的 TypeError:ini_set() 期望参数 2 为字符串,bool 给定

因此,您需要传递一个 eval 为 true 的字符串,例如'true'or '1'

于 2012-04-11T09:33:07.437 回答
2

您还需要:

ini_set('display_errors', true);
于 2012-04-11T09:32:20.757 回答
2

如果它是共享主机,那么出于安全原因,他们可能会禁用错误报告,但他们仍然应该能够为您的特定域提供错误日志,如果他们不想内联显示它,请尝试与他们交谈 - 获取访问日志文件或者可能是一些可以安全读取它的管理面板。

于 2012-04-11T09:38:40.397 回答