Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to append a path to PHP's include_path in .htaccess

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?

like image 803
zildjohn01 Avatar asked Jul 16 '09 03:07

zildjohn01


2 Answers

Create in the sub-sub-directories a file .htaccess with the contents

php_value include_path '../../includes'

or whatever include_path is right for that directory.

Advantages:

  1. No ugly hack with multiple includes with different depth. Just include 'head.php'.
  2. No dependency on editing php.ini.
  3. No need to use set_include_path() before including.
  4. No dependency on including constants like include INCLUDE_PATH . 'head.php'.

Price to pay:

You litter your sub-sub-directories each with a file .htaccess.

like image 84
nalply Avatar answered Oct 03 '22 14:10

nalply


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.

like image 35
Otterfan Avatar answered Oct 03 '22 13:10

Otterfan