Bug #73665 [Com]: set_error_handler cant't listen E_Deprecated when opcache loaded
Edit report at https://bugs.php.net/bug.php?id=73665&edit=1
ID: 73665
Comment by: dwilks at intacct dot com
Reported by: lcx165 at gmail dot com
Summary: set_error_handler cant't listen E_Deprecated when
opcache loaded
Status: Verified
Type: Bug
Package: opcache
Operating System: Linux 64bit NTS
PHP Version: 7.0.13
Block user comment: N
Private report: N
New Comment:
I just ran into this as well and tracked it down to opcache running in Apache. Yes, it only happens
once, while the script is compiling the first time before being cached.
I assume it has something to do with opcache explicitly disabling the user_error_handler while
compiling the script in opcache_compile_file.
Previous Comments:
------------------------------------------------------------------------
[2017-02-19 10:42:02] cmb@php.net
The expected and actual results above are swapped, but otherwise I can reproduce this at least for
the first page request.
------------------------------------------------------------------------
[2016-12-06 09:36:03] lcx165 at gmail dot com
Description:
------------
When opcache.so loadedï¼use set_error_handler function listen all error.
When E_Deprecated happened, can't call error_handler function, use php system error display.
Test script:
---------------
//a.php
<?php
class A {
//E_Deprecated
function a() {
}
}
//error.php
<?php
error_reporting(E_ALL);
set_error_handler(function($code, $msg, $file, $line) {
echo "[{$code}] {$msg}\r\n";
});
//NOTICE
echo $a;
//E_Deprecated
include 'a.php';
//run as cli: php error.php
Expected result:
----------------
[8] Undefined variable: a
PHP Deprecated: Methods with the same name as their class will not be constructors in a future
version of PHP; A has a deprecated constructor in /root/a.php on line 3
Deprecated: Methods with the same name as their class will not be constructors in a future version
of PHP; A has a deprecated constructor in /root/a.php on line 3
Actual result:
--------------
[8] Undefined variable: a
[8192] Methods with the same name as their class will not be constructors in a future version of
PHP; A has a deprecated constructor
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=73665&edit=1
Thread (7 messages)