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
 [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

Pull Requests

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-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 13:01:31 2024 UTC