In HTML, I can find a file starting from the web server's root folder by beginning the filepath with "/". Like:
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:
...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?)
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.)
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! :)
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.
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");