PHP - error_reporting不起作用

Cra*_*ayl 2 php

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

 <?php
 error_reporting(E_ALL);
 echo $test;
 ?>
Run Code Online (Sandbox Code Playgroud)

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

And*_*ong 10

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

ini_set('display_errors', 1);
Run Code Online (Sandbox Code Playgroud)


Álv*_*lez 5

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

ini_set('error_log', '/path/to/php-error.log');
Run Code Online (Sandbox Code Playgroud)

...和/或显示它:

ini_set('display_errors', true);
Run Code Online (Sandbox Code Playgroud)

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


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

<?php
declare(strict_types=1);
ini_set('display_errors', true);
Run Code Online (Sandbox Code Playgroud)

致命错误:未捕获的类型错误:ini_set() 期望参数 2 为字符串,给定布尔值

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