I used:
php_value auto_prepend_file \"file.php\"
in my .htaccess
that is in public_html
folder.
Now when
In your .htaccess
php_value auto_prepend_file /auto_prepend_file.php
php_value auto_append_file /auto_append_file.php
Next create 2 files in root
1) /auto_append_file.php
$appendFile = $_SERVER['DOCUMENT_ROOT'] . '/append.php';
require_once($appendFile);
2) /auto_prepend_file.php
$prependFile = $_SERVER['DOCUMENT_ROOT'] . '/prepend.php';
require_once($prependFile);
Now it should work on local and live servers irrespective of physical path or website providing each of your websites use the same filenames append.php and prepend.php.
I would also add, that if you don't know the hard relative server paths (as with shared hosting and/or PaaS which generate paths dynamically on reboot/deploy) then you can do this:
php_value include_path ./:../:../../:../../../:../../../../
php_value auto_prepend_file "prepend.php"
In essence this is Pseudo dynamic method/hack/workaround for achieving a .htaccess relative DOCUMENT_ROOT include (which is NOT possible in Apache) as follows:
php_value include_path "%{DOCUMENT_ROOT}/"
For security, in prepend.php, it's then possible to re/declare include path as follows (to whatever appropriate paths fit the application):
ini_set('open_basedir',$_SERVER['DOCUMENT_ROOT'].'/':<etc.>);
Could also look like the following if the last few directories are predictable:
php_value include_path ../../../path/to/www/
php_value auto_prepend_file "prepend.php"
The file must be inside PHP's include_path
. So you must either set the file's directory to be in the include_path
inside php.ini, or do it in the .htaccess with a php_value
statement.
php_value include_path ".:/path/to/file_directory"
php_value auto_prepend_file "file.php"
If you use the above method in .htaccess, be sure to copy the include_path
from php.ini in and add the :/path_to/file_directory
so you don't lose any already needed includes.
Alternatively, just add :/path/to/file_directory
to include_path
directly in the php.ini
If you cannot modify the include_path, you might try specifying a relative path to the auto_prepend_file
. This should work since the file path sent is processed identically as if it was called with require()
:
php_value auto_prepend_file "./file.php"