12
votes

My directory structure looks like this:

blog -> admin -> index.php
blog.php
db.php
functions.php

I have been trying to include (require, really) blog.php in the admin/index.php, but facing lots of errors. I'm following a PHP course, and the instructor does the same thing successfully.

admin/index.php:

require "../blog.php";

which, in turn, requires two more files in its directory.

require "db.php";
require "functions.php";
4
I think you need to just step it out a level, ie. ../../blog.php assuming that blog.php is not in the blog folder.prodigitalson
I don't think that would work. blog.php is in the blog directory.Rafay
Ahh your notation of directory structure was confusing to me :-)prodigitalson

4 Answers

39
votes

If you find that relative include paths aren't working as expected, a quick fix is to prepend __DIR__ to the front of the path you're trying to include.

require __DIR__ . "/../blog.php";

It's reasonably clean, and you don't need to modify the include path or working directory.

3
votes

You need to set the include_path in your php.ini.

If you want to set it at run-time, use set_include_path().

2
votes

If you are including this files db.php and functions.php in index.php then you have to write this code

require "../db.php";
require "../functions.php";

OR if you are including this files in blog.php then write this code

require "db.php";
require "functions.php";
-3
votes

I like to start my files with chdir($_SERVER['DOCUMENT_ROOT']). This allows me to get a nice and logical base path for all my includes.