php-为什么E_WARNING表现得像E_ERROR?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-为什么E_WARNING表现得像E_ERROR?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1690字,纯文字阅读大概需要3分钟。
内容图文
我正在运行一个脚本,该脚本需要的文件未正确包含在我的脚本中.
PHP致命错误:require_once():无法在线上/myDir/Net/SSH2.php中打开所需的’Math / BigInteger.php'(include_path = ..:/usr/share / php:/usr/share / pear’) 746
我设置了一个error_handler,它记录我得到的每个错误:
function script_error_handler($errno, $errstr, $errfile, $errline){
echo "IN ERROR HANDLER\n";
$GLOBALS['errors'][] = array(
'errno' => $errno,
'errstr' => $errstr,
'errfile' => $errfile,
'errline' => $errline
);
return true;
}
我还有一个shutdown_function,稍后会通过错误来确定成功或失败(以及其他因素).该功能的一部分会打印我记录的错误.
function shutdown_handler($io) {
print_r($GLOBALS['errors']);
echo "\n";
//irrelevant stuff ommitted
}
奇怪的是,其输出如下:
Array
(
[0] => Array
(
[errno] => 2
[errstr] => require_once(Math/BigInteger.php): failed to open stream: No such file or directory
[errfile] => /myDir/Net/SSH2.php
[errline] => 746
)
)
根据PHP的Predefined Constants,2是E_WARNING的值.
2 | E_WARNING(整数)|运行时警告(非致命错误).脚本的执行不会停止.
这似乎与我之前获得的致命错误输出明显冲突.为什么在这种情况下我没有收到E_ERROR?这里发生了什么?
解决方法:
require / require_once生成警告和致命错误.
没有您自己的错误处理,您应该会得到以下信息:
Warning: require_once(foo) [function.require-once]: failed to open stream: No such file or directory in […]
Fatal error: require_once() [function.require]: Failed opening required ‘foo’ (include_path=’.’) […]
查看输出的错误,您会看到“打开流失败:没有这样的文件或目录”部分–因此出现了警告文本.
description of set_error_handler告诉你,
“The following error types cannot be handled with a user defined function: E_ERROR, […]”
因此,正如预期的那样,捕获了警告-而按照手册所说的,致命错误不是.
内容总结
以上是互联网集市为您收集整理的php-为什么E_WARNING表现得像E_ERROR?全部内容,希望文章能够帮你解决php-为什么E_WARNING表现得像E_ERROR?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。