为什么包含错误会回显四次?
系统是否尝试4次“开放流”?
我做了:
function errorHandler($errno, $errstr, $errfile, $errline) {
if ($errno == E_NOTICE ) {
echo "<br/>".$errno."== E_NOTICE<br/>";
}
if ($errno == E_USER_NOTICE) {
echo "<br/>".$errno."== E_USER_NOTICE<br/>";
}
if ($errno == E_DEPRECATED) {
echo "<br/>".$errno."== E_DEPRECATED<br/>";
}
if ($errno == E_USER_DEPRECATED) {
echo "<br/>".$errno."== E_USER_DEPRECATED<br/>";
}
if ($errno == E_STRICT) {
echo "<br/>".$errno."== E_STRICT<br/>";
}
if ($errno == E_WARNING) {
echo "<br/>".$errno."== E_WARNING<br/>";
}
if ($errno == E_USER_WARNING) {
echo "<br/>".$errno."== E_USER_WARNING<br/>";
}
if ($errno == E_ERROR) {
echo "<br/>".$errno."== E_ERROR<br/>";
}
if ($errno == E_USER_ERROR) {
echo "<br/>".$errno."== E_USER_ERROR<br/>";
}
}
set_error_handler("errorHandler");
结果:
2== E_WARNING
2== E_WARNING
2== E_WARNING
2== E_WARNING
答案 0 :(得分:1)
如果没有看到与您的错误有关的其他信息,很难说。
根据给定的文件路径包含文件,如果没有给出,则包含 指定的include_path。如果在。中找不到该文件 include_path,include将最终检入调用脚本自己的 失败前的目录和当前工作目录。该 如果找不到文件,include构造将发出警告;这个 与require不同的行为,会发出致命的错误。
include()的文档。
在查找要包含的文件时,PHP会分别考虑包含路径中的每个条目。它将检查第一条路径,如果它 找不到它,检查下一条路径,直到找到它为止 包含文件或带有警告或错误的返回。你可以修改或 使用set_include_path()在运行时设置包含路径。
根据包含流程的PHP docs。
另外,我已对您提供的自定义errorHandler()
功能进行了一些修改。
<?php
function errorHandler($errno, $errstr, $errfile, $errline) {
$response;
switch ($errno){
case E_NOTICE:
$reponse = 'E_NOTICE';
break;
case E_USER_NOTICE:
$reponse = 'E_USER_NOTICE';
break;
case E_DEPRECATED:
$reponse = 'E_DEPRECATED';
break;
case E_USER_DEPRECATED:
$reponse = 'E_USER_DEPRECATED';
break;
case E_STRICT:
$reponse = 'E_STRICT';
break;
case E_WARNING:
$reponse = 'E_WARNING';
break;
case E_USER_WARNING:
$reponse = 'E_USER_WARNING';
break;
case E_ERROR:
$reponse = 'E_ERROR';
break;
case E_USER_ERROR:
$reponse = 'E_USER_ERROR';
break;
}
echo "<br />Errno: [$errno]; Type: [$reponse]<br />";
echo "<br />Error on line [$errline] in file [$errfile]<br />";
echo "<br />Error: ". $errstr . "<br />";
}
set_error_handler("errorHandler");
?>