Я хочу установить путь включения PHP в другой каталог. Я попытался поместить это в файл .htaccess, но это не сработало. Единственное, что я вижу, это путь включения, который я установил в httpd.conf, но не тот, который я пытался добавить.
<IfModule mod_php5.c> php_value include_path ".:/var/www/mywebsite/" </IfModule>
Что я делаю не так? Я сделал a2enmod mod_php5
, но он уже запущен, поэтому я полагаю, что PHP5 уже работает как модуль Apache.
[EDIT] В моей конфигурации vhost у меня есть следующее:
<Directory ~ "^/var/www/.*"> AllowOverride All Options FollowSymLinks -Indexes -MultiViews php_value include_path ".:./include:./.include/:/var/www/.include/:/var/www/" </Directory>
Дополнительная информация ( phpinfo()
):
Loaded Modules core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_mysql mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_status include_path .:./include:./.include/:/var/www/.include/:/var/www/ .:/usr/share/php:/usr/share/pear
С уважением, Кевин
Apache должен быть настроен так, чтобы параметры были переопределены через .htaccess. Проверьте конфигурационный файл Apache (httpd.conf) для переопределения для вашего каталога:
<Directory "/directory/containing/your/htaccess/file"> AllowOverride All </Directory>
Поместите это в определение vhost для вашего сайта.
Если это глобальное изменение, вы должны изменить параметр include_path в файле php.ini вместо использования .htaccess.
Для обоих этих изменений потребуется перезапуск Apache.
EDIT :
Это цитата из страницы функций Apache Core :
«Предположим, что доступ к имени файла – /home/abc/public_html/abc/index.html. Сервер рассматривает каждый из /, / home, / home / abc, / home / abc / public_html и / home / abc / public_html / abc в этом порядке. В Apache 1.2, когда рассматривается / home / abc, регулярное выражение будет соответствовать и применяться. В Apache 1.3 регулярное выражение вообще не рассматривается в этой точке дерева. следует рассматривать до тех пор, пока не будут применены все нормальные файлы s и .htaccess. Тогда регулярное выражение будет соответствовать / home / abc / public_html / abc и будет применяться ».
Я полагаю, на основе этой информации, что ваш php_value include_path
оператор оценивается после файла .htaccess. Если это так, значение, которое вы используете для include_path
в .htaccess, перезаписывается. Можете ли вы попробовать временно удалить строку include_path
из <Directory>
чтобы проверить эту теорию?
вы пробовали это в своем PHP-коде (в верхней части вашего кода):
<?php $path = "../folder/folder/file_name.inc.php"; require_once($path); ?>
Вы можете попытаться использовать chdir () в вашем php-файле, чтобы использовать другое местоположение в качестве базового расположения для всех функций файла, включая include =)