SJames Posted August 26, 2007 Share Posted August 26, 2007 When I use php include(), if I use the full file localtion, it doesn't include variables. When I use a relative location, however, it does. For example: <?php include "example/example/file.php"; // This will include the variables in file.php ?> <?php include "http://www.domain.com/example/example/file.php"; // This will not include the variables in file.php ?> Does anyone know why this is? I have the header as an include, and it has the file locations of other files included in it. Therefore, when it is included, the relative location changes, so I need to use the full filename and get the variables. Quote Link to comment Share on other sites More sharing options...
Jessica Posted August 26, 2007 Share Posted August 26, 2007 from the manual: If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see Appendix O, List of Supported Protocols/Wrappers for a list of protocols) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script. I wouldn't ever include files using a URL. You can use the $_SERVER variables to get the path. Quote Link to comment Share on other sites More sharing options...
SJames Posted August 26, 2007 Author Share Posted August 26, 2007 Okay, I'm sorry, but I couldn't understand what most of that meant. Could you give me an example of what I would need to do to include the contents of a .php file using something other than a relative file location? Quote Link to comment Share on other sites More sharing options...
chronister Posted August 26, 2007 Share Posted August 26, 2007 Thats funny. I re-hashed an old topic of mine last night regarding this exact thing. It was a topic from several months ago.. scroll to the bottom and look at my last post http://www.phpfreaks.com/forums/index.php/topic,139855.0.html Quote Link to comment Share on other sites More sharing options...
SJames Posted August 26, 2007 Author Share Posted August 26, 2007 That works, thanks. Quote Link to comment Share on other sites More sharing options...
wildteen88 Posted August 26, 2007 Share Posted August 26, 2007 What you'll want to do instead is use something like the following when including files: include $_SERVER['DOCUMENT_ROOT'] . '/example/example/file.php'; When using that you are using full local path instead of a relative one. As for a shortened version of Jesirose's quotation from the manual, it means this: If you use a URL Wrapper (eg: http://) when including a file PHP wont inherit the parent file's variable scope. Instead the included script will get parsed separately from the parent. The parent will receive just the result from processing the the script. Example: <?php $text = 'Hello World'; include 'http://www.mysite.com/include.php'; ?> <?php echo '<b>' . $text . '</b>'; ?> The result would be: Notice: Undefined variable: text in path/to/include.php on line 3 This is because include.php is being processed separately from the parent.php, and so include.php doesn't inherit the global scope from the parent. However if you used a file path for the include instead in parent.php, eg: include $_SERVER['DOCUMENT_ROOT'] . '/include.php'; The output would be: Hello World Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.