Bug #77183 [Opn->Fbk]: $_SERVER is not set in preloaded classes
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
+Status: Feedback
Type: Bug
Package: opcache
Operating System: Fedora 29
PHP Version: master-Git-2018-11-20 (Git)
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Is this still unresolved with latest PHP 7.4? If so, would it
work if included class.php (opcache_compile_file() has known
limitations regarding preloading)?
Previous Comments:
------------------------------------------------------------------------
[2018-11-22 13:19:44] cmb@php.net
> Restart php-fpm
Aha! I've only tested on CLI; apparently, the issue only affects
some SAPIs.
------------------------------------------------------------------------
[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
Thread (6 messages)