#29562 [Com]: global variable not available when sourced by include()
| From: | mxou at mycosmos dot gr | Date: | Tue, 07 Sep 2004 11:54:09 +0000 |
| Subject: | #29562 [Com]: global variable not available when sourced by include() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-65869@lists.php.net to get a copy of this message | ||
ID: 29562
Comment by: mxou at mycosmos dot gr
Reported By: darcy at 1000camels dot com
Status: Open
Bug Type: Scripting Engine problem
Operating System: Linux, MacOSX
PHP Version: 4.3.8
New Comment:
I've also encountered the same bug and was searching if someone had
encountered it so far. Not only my own global variables are of no
scope, PHP's superglobal structures become out of scope, also.
Very irritating.
Previous Comments:
------------------------------------------------------------------------
[2004-08-11 06:22:07] darcy at 1000camels dot com
does anyone have any more information on this? i'm finding it quite
difficult to work around this problem. i've tried making an absolute
call with the include (ie. using http://), but that's just causing more
trouble. i can't get access to the cookies from within an absolute
call... And the fix i described above doesn't really help, since i'm
trying to source a rather large piece of code (phpBB2), which has lots
of globals. too many to keep track of. besides, i don't think it's
the best approach...
------------------------------------------------------------------------
[2004-08-10 09:57:30] cstdenis at on-track dot ca
Looks like this is happening with PHP5 (release) too.
------------------------------------------------------------------------
[2004-08-09 19:05:59] darcy at 1000camels dot com
i did some more experiments and have found a kind of fix. It would
appear that if i globalize any of the variables which are losing scope
inside of the function which sources the code, the variables keeps
scope. this is interesting and may help me do what i need to do, but i
still think this is a problem.
if you want to see an example of my fix, look for the files called
-fixed on my server: http://1000camels.com/phpBug/
------------------------------------------------------------------------
[2004-08-09 10:46:55] boris at hident dot co dot il
Happens to me too.
4.3.6 and 4.3.7 was fine.
4.3.8 and the 4.3.9-dev snapshots have the bug.
Tried it both in Linux (Red-Hat and Fedora Core 2) and on Windows XP
(Apache/1.3.31 (Win32)).
I export some cookie variable to global scope
$somevar = $_COOKIE['somevar'];
in an included file. The $somevar variable is always empty inside
included files from other fucntions, even though they are defined as
global. register_globals is off.
Hope this will get fixed ASAP, because restructuring my whole php
application is not an option now.
------------------------------------------------------------------------
[2004-08-07 20:13:16] darcy at 1000camels dot com
Description:
------------
This is a somewhat complicated bug to demonstrate. i have placed files
online so that the behaviour can be demonstrated.
Essentially, the bug is that when you include a php script using
include() with a relative url (not absolute), global variables used
within a function in the sourced code are not available.
this seems to occur only when the original include() is within a class
or function. if it is in open code, it works find.
it's a complex bug and i'm not sure the best way to analyze.
Reproduce code:
---------------
http://1000camels.com/phpBug/
four files (and their source):
test-open-code.php - works
test-within-class.php - does not work
test-within-function.php - does not work
testMod.php - code which is being sourced
Expected result:
----------------
i expect the global variable to be available
Actual result:
--------------
the global variable (in my example $anObject and $aVariable) are not
available.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=29562&edit=1