0

I am finding difficulty in accessing a variable defined in the include file.

My include file is present in the root and it has a variable $x:

localhost/dir_name/include.php

I am including the include.php file in file.php present in the sub directory :

localhost/dir_name/sub_directory/file.php

But every time, the file.php gives the error of undefined variable $x

The weird thing is that when I use a relative path to include the include.php, it works perfectly. Like this:

include '../include.php';

ALSO, it works when using realpath($_SERVER['DOCUMENT_ROOT']). Like this:

include $_SERVER['DOCUMENT_ROOT'].'\dir_name\include.php'

But it never works for the absolute path. I also tried making the variable global but didn't helped me and the include.php file is also included correctly. It is not giving me any other error except this undefined variable.

Before asking, I tried finding this on SO, but couldn't find the answer to this error.

I am currently using the realpath($_SERVER["DOCUMENT_ROOT"]) as an alternative.

1 Answer 1

1

localhost is not an absolute path. PHP reads the actual directories on your computer, not the ones from the URL.

Try echo realpath($_SERVER["DOCUMENT_ROOT"]) and you'll see what I mean.

Sign up to request clarification or add additional context in comments.

6 Comments

I tried that it gave me the path like C:\xampp\htdocs... So, do I have to use either realpath method or the dirname(__DIR__) ? I cannot include the url path?
@Butterfruit: That's right. PHP reads physical directories, not URL ones.
@SecondRikudo: Well, include/require can be used with HTTP URLs as well (if the server config allows it) – but of course the result is a fundamentally different one, because an include via file system embeds the PHP code of the file, whereas an include via HTTP only embeds the output of the URL.
@CBroe: I was waiting for someone to say that. 1. It's insecure 2. You can't include PHP code that way. 3. Don't, just don't.
That was just in response to your statement, “PHP reads physical directories, not URL ones” – I was not advising to do this. (And of course you can include PHP code this way – you just have to make sure it does not get parsed by the server delivering it – f.e. by putting it into a .txt file instead of .php. Again, I’m not recommending this; this is just for clarification.)
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.