Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么@operator不在CodeIgniter中抑制E_通知?_Php_Codeigniter_Error Handling_Deserialization_Codeigniter 2 - Fatal编程技术网

Php 为什么@operator不在CodeIgniter中抑制E_通知?

Php 为什么@operator不在CodeIgniter中抑制E_通知?,php,codeigniter,error-handling,deserialization,codeigniter-2,Php,Codeigniter,Error Handling,Deserialization,Codeigniter 2,我保证,我知道不要忽视错误。运行XML站点地图生成器会在没有有效会话信息的情况下点击URL以取悦CodeIgniter。结果是,每个抓取的页面都有一个E_通知,还有一个让我发疯的日志(和电子邮件通知)。没有东西会断裂,没有人或机器人受到伤害——只有我的理智受到影响 一些人已经为CodeIgniter unserialize()故障设计了修复程序: 加密问题: 递归序列化问题: 我已经在每一个前提下运行,仍然收到以下数百条通知: NOTICE: unserialize() [<a hre

我保证,我知道不要忽视错误。运行XML站点地图生成器会在没有有效会话信息的情况下点击URL以取悦CodeIgniter。结果是,每个抓取的页面都有一个E_通知,还有一个让我发疯的日志(和电子邮件通知)。没有东西会断裂,没有人或机器人受到伤害——只有我的理智受到影响

一些人已经为CodeIgniter unserialize()故障设计了修复程序:

  • 加密问题:
  • 递归序列化问题:
我已经在每一个前提下运行,仍然收到以下数百条通知:

NOTICE: unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 98 of 128 bytes

我没有添加抑制性“@”-它已经存在了。这难道不意味着如果抛出E_NOTICE消息,它将特别禁止发送消息吗?如果不是,那行怎么可能生成所有这些让我想把头发都撕下来的通知呢?

设置自定义错误处理程序会绕过PHP的错误处理——显然是PHP的错误抑制:

重要的是要记住,除非回调函数返回FALSE,否则对于error_types指定的错误类型,标准PHP错误处理程序将被完全绕过。error_reporting()设置将不起作用,您的错误处理程序将被调用,但您仍然能够读取error_reporting()的当前值并采取适当的行动。特别值得注意的是,如果引起错误的语句是由@error control运算符前置的,则该值将为0


多么美好的一天!感谢您将这一点说得如此清楚–我终于能够在不到五分钟的时间内更新我的异常处理程序,我感到非常欣慰,也受到了更好的教育。干杯
$data = @unserialize(strip_slashes($data));
<?php
set_error_handler(function ($errno, $errstr) {
    echo $errstr;
}, E_ALL);
@unserialize("foo"); // Still shows $errstr!