vkGunasekaran
vkGunasekaran

Reputation: 6814

including files in php

HI,
I try to run a file thru terminal but am getting the error like "include path is not correct"
for example, i have a "test.php" in following folder

/home/sekar/test/file.php  

in file php i've included a file "head.php" which is in ,

/home/sekar/test/includes/head.php

Thes head.php includes a class file called cls.php which is in class folder,

/home/sekar/test/classes/cls.php

i tried like this in terminal,

php /home/sekar/test/file.php

for a clear a view just have a look @ contents of the those three files,

file.php

<?php 
include_once "./test/includes/head.php";
?>

head.php

<?php 
include_once "./test/classes/cls.php";
?>

cls.php

<?php 
echo "this is from cls file";
?>

Can anyone help me to get around this issue? Thanks!

Upvotes: 6

Views: 361

Answers (3)

Manigandan Arjunan
Manigandan Arjunan

Reputation: 2265

just include it as follows

file.php

as both file.php and includes directory is in the current(same) directory(test) you can include the head.php file as follows

<?php 
include_once "includes/head.php";
?>

here in head.php the head.php and cls.php both presented in different directories you have include the file as follows.

head.php

<?php 
include_once "../classes/cls.php";
?>

when you use ../ it will come out from current directory and now both the classess and includes presented under the same directory you can include the path classes/cls.php now.

Upvotes: 1

Blender
Blender

Reputation: 298176

I think that include_once() basically inserts code into your file without evaluating it, so the path is relative to that of the including file (file.php, not head.php).

Also, I'd do a bit of research on relative paths, as you're referencing from the directory /home/sekar/test/, not the file's path.

This might work:

file.php

<?php 
include_once "./includes/head.php";
?>

head.php

<?php 
include_once "../classes/cls.php";
?>

cls.php

<?php 
echo "this is from cls file";
?>

Upvotes: 1

Sander Marechal
Sander Marechal

Reputation: 23216

PHP includes are relative to the set include_path, the first element of which is . or the current working directory. The current working directory does not have to be the same as the directory your PHP file is in, and it does not have to be the same as your home directory (which you seem to be assuming). There are two ways to solve your problem.

You can change the current working directory of your scripts by adding this to the top of file.php:

chdir(dirname(__FILE__));

Or, you can add that directory to the include path:

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

Upvotes: 1

Related Questions