#29562 [Opn]: global variable not available when sourced by include()
| From: | darcy at 1000camels dot com | Date: | Wed, 11 Aug 2004 04:22:10 +0000 |
| Subject: | #29562 [Opn]: global variable not available when sourced by include() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-64389@lists.php.net to get a copy of this message | ||
ID: 29562
User updated by: darcy at 1000camels dot com
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:
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...
Previous Comments:
------------------------------------------------------------------------
[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