How do I set an absolute include path in PHP?

php

Question

In HTML, I can find a file starting from the web server's root folder by beginning the filepath with "/". Like:

/images/some_image.jpg

I can put that path in any file in any subdirectory, and it will point to the right image.

With PHP, I tried something similar:

include("/includes/header.php");

...but that doesn't work.

I think that that this page is saying that I can set include_path once and after that, it will be assumed. But I don't quite get the syntax. Both examples start with a period, and it says:

Using a . in the include path allows for relative includes as it means the current directory.

Relative includes are exactly what I don't want.

How do I make sure that all my includes point to the root/includes folder? (Bonus: what if I want to place that folder outside the public directory?)

Clarification

My development files are currently being served by XAMPP/Apache. Does that affect the absolute path? (I'm not sure yet what the production server will be.)

Update

I don't know what my problem was here. The include_path thing I referenced above was exactly what I was looking for, and the syntax isn't really confusing. I just tried it and it works great.

One thing that occurs to me is that some people may have thought that "/some/path" was an "absolute path" because they assumed the OS was Linux. This server is Windows, so an absolute path would have to start with the drive name.

Anyway, problem solved! :)

1
40
4/14/2010 5:07:31 PM

Accepted Answer

What I do is put a config.php file in my root directory. This file is included by all PHP files in my project. In that config.php file, I then do the following;

define( 'ROOT_DIR', dirname(__FILE__) );

Then in all files, I know what the root of my project is and can do stuff like this

require_once( ROOT_DIR.'/include/functions.php' );

Sorry, no bonus points for getting outside of the public directory ;) This also has the unfortunate side affect that you still need a relative path for finding config.php, but it makes the rest of your includes much easier.

46
12/5/2008 4:42:07 PM

One strategy

I don't know if this is the best way, but it has worked for me.

$root = $_SERVER['DOCUMENT_ROOT'];
include($root."/path/to/file.php");

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon