我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。

我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);

还有什么要做?


当前回答

Use:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

这是编写它的最佳方法,但语法错误会产生空白输出,因此请使用控制台检查语法错误。调试PHP代码的最佳方法是使用控制台;运行以下操作:

php -l phpfilename.php

其他回答

在php.ini中:

display_errors = on

然后重新启动web服务器。

您无法在运行时启用错误输出的同一文件中捕获解析错误,因为它会在实际执行任何操作之前解析文件(因为在执行过程中遇到错误,所以不会执行任何操作)。您需要更改实际的服务器配置,以便启用display_errors并使用适当的error_reporting级别。如果您没有访问php.ini的权限,则可以使用.htaccess或类似文件,具体取决于服务器。

此问题可能提供其他信息。

由于不清楚您使用的是什么操作系统,这些是我的2美分Windows。如果您正在使用XAMPP,则需要在C:\xamp.php下手动创建日志文件夹。不是你的错,ApacheFriends提交了这个。

要阅读并遵循此文件,请执行以下操作。

Get-Content c:\xampp\php\logs\php_error_log -Wait

要在VSCode中执行此操作,请在.VSCode\tasks.json中创建一个任务

{ 
  // See https://go.microsoft.com/fwlink/?LinkId=733558 
  // for the documentation about the tasks.json format 
  "version": "2.0.0", 
  "tasks": [ 
    { 
      "label": "Monitor php errors", 
      "type": "shell", 
      "command": "Get-Content -Wait c:\\xampp\\php\\logs\\php_error_log", 
      "runOptions": { 
        "runOn": "folderOpen" 
      } 
    } 
  ] 

并在加载文件夹时运行。

在Unix CLI中,只将错误重定向到文件是非常实用的:

./script 2> errors.log

在脚本中,可以像往常一样使用var_dump()或等效方法(STDOUT和STDERR都将接收输出),但只能在日志文件中写入:

fwrite(STDERR, "Debug infos\n"); // Write in errors.log^

然后从另一个shell中进行实时更改:

tail -f errors.log

或者干脆

watch cat errors.log

在index.php文件中设置:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);