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

From: Date: Sat, 05 Nov 2005 19:00:33 +0000
Subject: #35117 [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-87644@lists.php.net to get a copy of this message
ID: 35117 User updated by: ramsey@php.net Reported By: ramsey@php.net Status: Open Bug Type: *General Issues Operating System: Debian sarge PHP Version: 5.1.0RC4 New Comment: Got it... reporting to the correct place. Previous Comments: ------------------------------------------------------------------------ [2005-11-05 19:59:25] ramsey@php.net 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. ------------------------------------------------------------------------ [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 (#87644) next »