#35117 [Bgs->Opn]: $_SERVER auto-global not in global scope in included file

From: Date: Sat, 05 Nov 2005 18:59:26 +0000
Subject: #35117 [Bgs->Opn]: $_SERVER auto-global not in global scope in included file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-87641@lists.php.net to get a copy of this message
ID: 35117 User updated by: ramsey@php.net Reported By: ramsey@php.net -Status: Bogus +Status: Open Bug Type: *General Issues Operating System: Debian sarge PHP Version: 5.1.0RC4 New Comment: Please note the last paragraph of my description. I think this is a problem with APC and not with 5.1RC4. So, to test, use 5.1RC4, but install APC with "pecl install apc" (using the default configuration values) and enable the extension in php.ini. Previous Comments: ------------------------------------------------------------------------ [2005-11-05 19:58:14] sniper@php.net Ah, I didn't notice the mention about APC. This is not PHP bug but bug in APC then. Report this to correct place. (pecl.php.net) ------------------------------------------------------------------------ [2005-11-05 19:56:43] sniper@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip I can't reproduce this. And what configure line did you use? ------------------------------------------------------------------------ [2005-11-05 19:39:04] ramsey@php.net Description: ------------ I noticed the following error after moving a Web site's code to a machine running PHP 5.1RC4: PHP Notice: Undefined variable: _SERVER in /data/home/ramsey/public_html/file.inc on line 2 This didn't make any sense, however for two reasons: 1) I'm able to use $_SERVER in other scripts, and 2) this variable should be an auto-global. The difference with this script, though, is that it is an .inc file that is included and executed within a parent script. If I place "global $_SERVER;" at the top of the included file, then it has access to the $_SERVER auto-global array--on the first load of the page only. Each subsequent load of the page again produces the PHP Notice above. I haven't tested this with other auto-globals, so I don't know whether they have the same problems. I created two simple test scripts to reproduce this (shown in the "reproduce code" section). I noticed that the first time I loaded the page, it showed the $_SERVER array just fine, but on each subsequent load, it generates the undefined variable notice given above. Everytime I make a change (any change) to the page and load it, the array shows up on the first load only. With this in mind, I realized that the problem was probably not with the auto-global array but with APC, which I also have installed (using "pecl install apc" and accepting the default configuration values). When I comment out the APC extension line in php.ini, the $_SERVER array shows up perfectly on each load of the page. Reproduce code: --------------- test.php: <?php include_once 'file.inc'; ?> file.inc: <?php print_r($_SERVER); ?> Expected result: ---------------- I should see the print_r() output of the $_SERVER auto-global array each time the page loads. Actual result: -------------- A PHP notice that occurs each time the page loads (but I noticed that the expected result occurred the first time the page loaded): PHP Notice: Undefined variable: _SERVER in /data/home/ramsey/public_html/file.inc on line 2 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35117&edit=1

« previous php.bugs (#87641) next »