#35117 [Opn->Bgs]: $_SERVER auto-global not in global scope in included file
| From: | sniper@php.net | Date: | Sat, 05 Nov 2005 19:00:47 +0000 |
| Subject: | #35117 [Opn->Bgs]: $_SERVER auto-global not in global scope in included file | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-87645@lists.php.net to get a copy of this message | ||
ID: 35117
Updated by: sniper@php.net
Reported By: ramsey@php.net
-Status: Open
+Status: Bogus
Bug Type: *General Issues
Operating System: Debian sarge
PHP Version: 5.1.0RC4
New Comment:
.
Previous Comments:
------------------------------------------------------------------------
[2005-11-05 20:00:33] ramsey@php.net
Got it... reporting to the correct place.
------------------------------------------------------------------------
[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