Bug #79350 [Com]: 8.0-dev: Uncaught Error: Class 'PelEntry' not found
| From: | bugreports at gmail dot com | Date: | Thu, 12 Mar 2020 10:51:14 +0000 |
| Subject: | Bug #79350 [Com]: 8.0-dev: Uncaught Error: Class 'PelEntry' not found | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-226058@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79350&edit=1
ID: 79350
Comment by: bugreports at gmail dot com
Reported by: bugreports at gmail dot com
Summary: 8.0-dev: Uncaught Error: Class 'PelEntry' not found
Status: Analyzed
Type: Bug
Package: Scripting Engine problem
Operating System: Linux
PHP Version: master-Git-2020-03-07 (Git)
Block user comment: N
Private report: N
New Comment:
sounds like a terrible BC break and at least the error message is unhelpful nonsense given that even
one of the zend engine experts pointed at include at the first try :-)
Previous Comments:
------------------------------------------------------------------------
[2020-03-12 10:29:14] nikic@php.net
Here's a reduced test case:
<?php
echo new Test, "\n";
class Test {
public function __toString() {
echo "Early bound!";
}
}
------------------------------------------------------------------------
[2020-03-12 10:22:44] nikic@php.net
No, that's not it. I think the issue is that this code is relying on early binding, and
early-binding on the PelEntry class is now prevented due to implicit addition of Stringable
interface.
------------------------------------------------------------------------
[2020-03-12 10:09:31] nikic@php.net
I think something is going wrong with a recursive require_once.
------------------------------------------------------------------------
[2020-03-07 04:12:11] bugreports at gmail dot com
Description:
------------
this is only broken with PHP 8.0-dev for some time now and it's technically not possible that a
class defined in the include above the extending definition is not found
require_once __DIR__ . '/PelEntry.php';
class PelEntryUndefined extends PelEntry
{
}
[builduser@testserver:/rpmbuild/SPECS]$ /home/builduser/rpmbuild/BUILD/php-8.0.0/sapi/cli/php -n
/www/php-bug/test.php
Fatal error: Uncaught Error: Class 'PelEntry' not found in
/Volumes/dune/www-servers/php-bug/pel/PelEntryUndefined.php:59
Stack trace:
#0 /Volumes/dune/www-servers/php-bug/pel/PelIfd.php(44): require_once()
#1 /Volumes/dune/www-servers/php-bug/pel/PelTag.php(45):
require_once('/Volumes/dune/w...')
#2 /Volumes/dune/www-servers/php-bug/pel/PelEntry.php(52):
require_once('/Volumes/dune/w...')
#3 /Volumes/dune/www-servers/php-bug/pel/PelExif.php(47):
require_once('/Volumes/dune/w...')
#4 /Volumes/dune/www-servers/php-bug/pel/PelJpeg.php(49):
require_once('/Volumes/dune/w...')
#5 /Volumes/dune/www-servers/php-bug/test.php(2): include_once('/Volumes/dune/w...')
#6 {main}
thrown in /Volumes/dune/www-servers/php-bug/pel/PelEntryUndefined.php on line 59
Test script:
---------------
tarball with the (i know outdated) pel-library and the simplest reproducer which works in 7.0-7.4
but no longer with HEAD
https://drive.google.com/file/d/1stClmJ92hp1ZbDNbRYOGyu3FXn0ktRbI/view?usp=sharing
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79350&edit=1