php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35117 $_SERVER auto-global not in global scope in included file
Submitted: 2005-11-05 19:39 UTC Modified: 2005-11-05 20:00 UTC
From: ramsey@php.net Assigned:
Status: Not a bug Package: *General Issues
PHP Version: 5.1.0RC4 OS: Debian sarge
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ramsey@php.net
New email:
PHP Version: OS:

 

 [2005-11-05 19:39 UTC] 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

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-11-05 19:58 UTC] 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 20:00 UTC] ramsey@php.net
Got it... reporting to the correct place.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 15:01:29 2024 UTC