views:

1196

answers:

1

Currently on my site I'm using statements like:

include 'head.php';
include '../head.php';
include '../../head.php';

depending on how many nested folders deep I am. I'm sure there is a better way to do this.

I'm convinced .htaccess is the solution, but I'm not sure how to go about implementing it. If I insert:

php_value include_path "public/html/root"

... I lose the rest of my paths (/usr/lib/php, etc). I naively tried:

php_value include_path $include_path . "(path)"

but of course this didn't work. How could I prepend or append a single path to this list with .htaccess?

+5  A: 

If you can't edit the php.ini file itself, you could add

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

before your include statements.

However if you find yourself having include or require troubles, it is probably a code smell. The best solution would be a good object-oriented design with a good __autoload function.

Otterfan
Unfortunately I'm on a server with a lot of other sites right now... I don't want to put the path_to_add in every single file because it's something odd like /home/12345678/public_html... I'd just like to add the "public_html" to the include path in the simplest way possible. Doing a search and replace when the site gets transferred seems clunky.
zildjohn01
Could you look up the current php `include_path` with `php_info()` or `get_include_path()` and then add php_value include_path "public/html/root:/first/old/path:/second/old/path"to your `.htaccess`. You'd only have to do it once.
Otterfan
True, but I was hoping for a more elegant solution. Hopefully they don't reconfigure the server any time soon. Anyways thanks for the help, this is probably the best it can get.
zildjohn01