php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #77183 $_SERVER is not set in preloaded classes
Submitted: 2018-11-20 15:38 UTC Modified: 2018-11-22 13:19 UTC
From: benjamin dot morel at gmail dot com Assigned:
Status: Open Package: opcache
PHP Version: master-Git-2018-11-20 (Git) OS: Fedora 29
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2018-11-20 15:38 UTC] 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

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2018-11-21 18:15 UTC] cmb@php.net
Works for me.
 [2018-11-22 10:20 UTC] 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-22 13:19 UTC] cmb@php.net
> Restart php-fpm

Aha!  I've only tested on CLI; apparently, the issue only affects
some SAPIs.
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Sun May 26 09:01:25 2019 UTC