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

34,233

Solution 1

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.

Solution 2

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.

Share:
34,233
zildjohn01
Author by

zildjohn01

Updated on April 30, 2020

Comments

  • zildjohn01
    zildjohn01 almost 4 years

    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?