我检查了我的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);
还有什么要做?
当前回答
由于不清楚您使用的是什么操作系统,这些是我的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"
}
}
]
并在加载文件夹时运行。
其他回答
这将起作用:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<?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进行故障排除。
警告:以下答案事实上不正确。错误处理中没有任何更改,未捕获的异常与其他错误一样显示。建议的方法必须谨慎使用,因为它无条件地输出错误,尽管设置了display_error,并且可能会通过向现场的局外人透露敏感信息而构成威胁。
您可能会发现“错误报告”或“显示错误”的所有设置在PHP7中似乎都不起作用。这是因为错误处理已更改。请尝试以下操作:
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'];
}
或者,要一次性捕获异常和错误(这与PHP5不向后兼容):
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'];
}
Use:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
这是编写它的最佳方法,但语法错误会产生空白输出,因此请使用控制台检查语法错误。调试PHP代码的最佳方法是使用控制台;运行以下操作:
php -l phpfilename.php
上面的代码应该可以工作:
error_reporting(E_ALL);
但是,请尝试在文件中编辑手机上的代码:
error_reporting =on