Intereting Posts
Как искать сингулярные / множественные числа в php mysql Как преобразовать скрипт с использованием функций mysql_ для использования функций mysqli_? Каков наиболее эффективный способ подсчета всех вхождений конкретного символа в строку PHP? Как присоединиться к последней записи в таблице? Как использовать амперсанды в PHP GET URL-переменная (или аргумент функции)? Арабский текстовый вывод php mysql utf-8 Swagger-PHP для создания JSON-файла для Swagger-UI Где heck – любая документация Selenium 2 для PHPUnit? Как переписывать и устанавливать заголовки одновременно в Apache Сгенерировать секретный код для сброса пароля Разрешены ли китайские символы в URL-адресах? Что означают битовые флаги в mysqli, используя fetch_field_direct Как добавить фильтр электронной почты в учетную запись электронной почты IMAP? Безопасное хранение учетных данных пользователя в БД, для веб-приложения PHP PHP Upload IF ISSET всегда говорит, что это так?

Как установить путь PHP include через .htaccess?

Я хочу установить путь включения 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 =)