|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2021-02-23 11:47 UTC] php4fan at gmail dot com
[2021-02-23 11:56 UTC] nikic@php.net
[2023-06-09 09:05 UTC] hfdifguojoweeui322 at gmail dot com
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 04:00:01 2025 UTC |
Description: ------------ In my code I have the following code executed many times: <?php eval(" include("/path/to/a/file_1.php"); "); ?> It is not as direct as that: the evaled string is fetched from a db rather than being a literal, but it's fixed as the above. Under some apparently random circumstances, at the Nth time that gets executed, it executes a completely unrelated file /path/to/another/file_2.php instead of the one whose name is being passed to include(). Disabling opcache fixes the issue. I haven't been able to recreate a minimal, sharable, reproducible test case. With my code it happens systematically 100% of the time that this given script is executed. It looks almost as if, because of a hash collision or something of that sort (uttelry random but at the same time 100% reproducible), the opcache ended up fetching a completely unrelated precompiled piece of bytecode. This is a REGRESSION, it happens with PHP 7.4.11 but not with PHP 5.6