2006-04-08 (토), 12:18 -0400, John Hicks 쓰시길: > kmh496 wrote: > > 2006-04-08 (토), 18:20 +0900, kmh496 쓰시길: > > > >>hi, > >>my webroot is > >> > >>/a/b/current/ > >> > >>i am in /a/b/current/d/file.php > >> > >>file.php has a line > >> > >>require_once ($_SERVER[document_root]."/d/common.php"); > >> > >>common.php has a line which says > >> > >>require_once ($_SERVER[document_root]."/_common.php"); > >>// main include file for whole site > >> > >>it sends me no errors about missing files, but the variables inside main > >>include file _common.php are not set and don't exist in file.php > >> > >>where is my mistake? > > > Just a thought: > > Are your variable definitions, by any chance, inside functions? That > would explain why they aren't set when you continue. The 'global' > statement will help in that case. > > I can assure you that includes are not "advanced PHP". You should be > able to do what you are trying to do. There is no doubt a simple > explanation for your problem. Finding it is always the hard part. > Patience and perserverence and calm rational thought will get you there. the problem is when i want to expand a site with a new application, usually that comes in its own directory. but, to include the new application i have to wrap it inside the main directory -- in this case /a/b/current .... which requires of course that i call first /a/b/current/common.php which starts the sessions, sends the cookies, checks post variables. but that doesn't work, really, because then all of the includes for the application says "include(main.php)" ... but php thinks it's in /a/b/current not in /a/b/current/d/ ..... so it says "cannot find include file "main.php" in path: path:::;; .." my wish list: 1) applications came with a configurable directory to preced every include or require. like, change "include(main.php)" --> include( $config[dir] . "main.php" ) alternatively, 2) all applications come with a unique prefix affixed to the files so they can simply be laid out in the document root and be visually and mentally and upgradably separate from the files of the other applications existing in the same $_SERVER[document_root] i honestly don't understand the include mechanism. i have encountered many cases ( sorry, can't be explicit) where a file which was 2 includes away wouldn't have any variables in the main script, unless i added a line to include that file in that file directly. as an example: /a/b/current/index.php include("common.php"); include("lib/functions2.php"); /a/b/current/lib/functions2.php you would think would be able to simply run with what was included "above" it but you can't. you have to redeclare include_once($g4[bbs]. "/dbconfig.php"); include_once($g4[bbs]. "/common.php"); the include of the common.php file. i am looking for the rule for that.... they say it's global, but it's not. However, i found that if you include "common.php" again then it finds the functions it misses, because it itself was included by "common.php". as if the direction of the includes matters ......... explicitly: if common.php includes lib/functions.php common.php can access lib/functions.php but if lib/functions.php needs common.php then lib/functions.php needs to include common.php is that correct? because of these problems, when i have to wrap another application inside an existing SKIN and common.php, i end up changing the file names, running a SED script to replace all occurrences of filenames with their newly-uniquely-prefixed-names ..... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php