Jump to content

Recommended Posts

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.

Link to comment
https://forums.phpfreaks.com/topic/66779-solved-php-include/
Share on other sites

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.

Link to comment
https://forums.phpfreaks.com/topic/66779-solved-php-include/#findComment-334618
Share on other sites

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

Link to comment
https://forums.phpfreaks.com/topic/66779-solved-php-include/#findComment-334639
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.