#35117 [Bgs->Opn]: $_SERVER auto-global not in global scope in included file
| From: | ramsey@php.net | 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