|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2019-12-14 04:13 UTC] szargv at qq dot com
Description:
------------
PHP 7.4 + CentOS 7
in CLI mode
when opcache.enable_cli=1 it shows null
when opcache.enable_cli=0 it shows 3
my email is szargv@qq.com
Test script:
---------------
<?php
switch (1){
case 1:
$GLOBALS = array();
$GLOBALS['td'] = array();
$GLOBALS['td']['nsno'] = 3;
var_dump($GLOBALS['td']['nsno']);
break;
}
Expected result:
----------------
in CLI mode
when opcache.enable_cli=1 it shows null
when opcache.enable_cli=0 it shows 3
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 12:00:01 2025 UTC |
there must be something corrupt because you can't even detect that in code - !isset($GLOBALS['bug_78961']['nsno']) don't fire the line before - was attempted to write some regression test for it <?php declare(strict_types=1); switch (1){ case 1: $GLOBALS = []; $GLOBALS['bug_78961'] = []; $GLOBALS['bug_78961']['nsno'] = 3; if(!isset($GLOBALS['bug_78961']['nsno'])) { trigger_error('https://bugs.php.net/bug.php?id=78961'); } var_dump($GLOBALS['bug_78961']['nsno']); break; }Due to commit 3ccd3ab[1], CSE optimizes this basically to $GLOBALS = array(); $GLOBALS['td'] = array(); $td['nsno'] = 3; var_dump($GLOBALS['td']['nsno']); However, $the assignment to $GLOBALS severed the link to the global variables, so that this optimization can not work. The switch is irrelevant, by the way. [1] <http://git.php.net/?p=php-src.git;a=commit;h=3ccd3aba90b4c0c95f1e0a457dbbc33c4524a4ed>