Bug #77183 [Opn]: $_SERVER is not set in preloaded classes
| From: | cmb@php.net | Date: | Thu, 22 Nov 2018 13:19:44 +0000 |
| Subject: | Bug #77183 [Opn]: $_SERVER is not set in preloaded classes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-218084@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77183&edit=1
ID: 77183
Updated by: cmb@php.net
Reported by: benjamin dot morel at gmail dot com
Summary: $_SERVER is not set in preloaded classes
Status: Open
Type: Bug
Package: opcache
Operating System: Fedora 29
PHP Version: master-Git-2018-11-20 (Git)
Block user comment: N
Private report: N
New Comment:
> Restart php-fpm
Aha! I've only tested on CLI; apparently, the issue only affects
some SAPIs.
Previous Comments:
------------------------------------------------------------------------
[2018-11-22 10:20:11] benjamin dot morel at gmail dot com
Weird. I reproduced it again today with the latest master.
Full reproduce steps:
1. Create /var/www/html/index.php as above
2. Create /var/www/html/class.php as above
3. Create /var/www/html/preload.php as above; change the path to an absolute path:
opcache_compile_file('/var/www/html/class.php');
4. Add this line to php.ini: opcache.preload = /var/www/html/preload.php
5. Restart php-fpm
6. Load http://localhost/
You should get the error:
Notice: Undefined variable: _SERVER in /var/www/html/class.php on line 6
------------------------------------------------------------------------
[2018-11-21 18:15:54] cmb@php.net
Works for me.
------------------------------------------------------------------------
[2018-11-20 15:38:44] benjamin dot morel at gmail dot com
Description:
------------
When using a preloaded class that references $_SERVER, the variable is not set.
When setting auto_globals_jit to Off, it works.
Test script:
---------------
index.php
========
<?php
header('Content-Type: text/plain');
print_r(Test::getServer());
class.php
=========
<?php
class Test {
public static function getServer()
{
return $_SERVER;
}
}
preload.php
===========
<?php
opcache_compile_file('class.php');
Expected result:
----------------
Array(
...
)
Actual result:
--------------
Notice: Undefined variable: _SERVER in /var/www/html/class.php on line 6
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77183&edit=1