13

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";
Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Rafay
  • 23,785
  • 4
  • 20
  • 27

4 Answers4

43

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.

Sam Dufel
  • 17,560
  • 3
  • 48
  • 51
  • This worked. Thanks! Though I have no idea why do I have to do this. The instructor gets away with `require "../blog.php";` without any problem. Is it because of OS differences? He's on Mac, and I am on Windows. – Rafay Dec 16 '12 at 05:45
  • 2
    I'm actually not entirely sure - I believe it has to do with the current working directory not always matching the script's directory. – Sam Dufel Dec 16 '12 at 05:53
  • 1
    @Rafay: its a bad practice anyway. You should always calculate the absolute path and then require/include. – prodigitalson Dec 16 '12 at 21:47
3

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

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

Andy Lester
  • 91,102
  • 13
  • 100
  • 152
2

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";
Yogesh Suthar
  • 30,424
  • 18
  • 72
  • 100
-3

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.

Niet the Dark Absol
  • 320,036
  • 81
  • 464
  • 592