php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #81571 Deprecation error leads to Fatal error?
Submitted: 2021-10-30 12:35 UTC Modified: 2021-11-02 14:07 UTC
From: ondrej at mirtes dot cz Assigned: cmb (profile)
Status: Not a bug Package: *General Issues
PHP Version: 8.1.0RC5 OS: N/A
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: ondrej at mirtes dot cz
New email:
PHP Version: OS:

 

 [2021-10-30 12:35 UTC] ondrej at mirtes dot cz
Description:
------------
In my CI build I get this problem:

PHP Fatal error:  During inheritance of ArrayAccess: Uncaught Return type of Hoa\Protocol\Node\Node::offsetExists($  
  name) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChan  
  ge] attribute should be used to temporarily suppress the notice    

So deprecation error somehow gets converted to a fatal error?

Also note that this isn't an issue of an error handler because other deprecation errors are printed without crashing PHP before that too.

Here's the CI pipeline in question: https://github.com/phpstan/phpstan-src/runs/4055035108?check_suite_focus=true


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-11-02 11:08 UTC] cmb@php.net
-Status: Open +Status: Feedback -Assigned To: +Assigned To: cmb
 [2021-11-02 11:08 UTC] cmb@php.net
This looks like a PHPUnit error handler issue.  That deprecation
notice is the first one that is reported[1].  Or am I missing
something?

[1] <https://github.com/phpstan/phpstan-src/runs/4055035108?check_suite_focus=true#step:6:7>
 [2021-11-02 13:31 UTC] ondrej at mirtes dot cz
-Status: Feedback +Status: Assigned
 [2021-11-02 13:31 UTC] ondrej at mirtes dot cz
What confuses me is the "During inheritance" part of the message which isn't present in the original PHP deprecation error. Do you think that's coming from PHPUnit? I don't see that string when searching my vendor directory.
 [2021-11-02 13:51 UTC] nikic@php.net
This happens when a broken error handler converts a deprecation notice into an exception. Exceptions during inheritance are not supported and converted into fatal errors.
 [2021-11-02 13:54 UTC] cmb@php.net
-Status: Assigned +Status: Feedback
 [2021-11-02 13:54 UTC] cmb@php.net
> What confuses me is the "During inheritance" part of the message
> which isn't present in the original PHP deprecation error.

Ah, right, that is caused by PHP whenever an error handler throws
an exception[1].  This is basically <https://3v4l.org/6sbhF>.

[1] <https://github.com/php/php-src/blob/ddaf64b56c88f0ae223b1aca25293dd7fec77fc0/Zend/zend_inheritance.c#L1002-L1005>
 [2021-11-02 14:07 UTC] cmb@php.net
-Status: Feedback +Status: Not a bug
 [2021-11-02 14:07 UTC] cmb@php.net
Oh, I missed Nikita's comment.  So closing as not a bug.
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Fri May 27 19:05:46 2022 UTC