XAMPP упрощает настройку локального стека LAMP для Windows. Поэтому весьма разочаровывает, что включение файлов htaccess - такой кошмар.
Моя проблема:
У меня есть PHP-приложение, которое требует apache / php для поиска каталога / includes /, содержащегося в приложении. Для этого файлы htaccess должны быть разрешены в apache, а файл htaccess должен точно указывать, где находится каталог include.
Проблема в том, что я не могу настроить Apache для просмотра этих файлов htaccess. У меня были серьезные проблемы с установкой этого приложения в универе и привлечением администраторов для помощи в настройке. Это не должно быть так сложно, но по какой-то причине я просто не могу заставить Apache играть хорошо.
Это мои настройки:
C: \ XAMPP
C: \ XAMPP \ HTDOCS
c: \ xampp \ apache \ conf \ httpd.conf - где я внес изменения, перечисленные ниже
c: \ xampp \ apache \ bin \ php.ini - где изменения в этом файле влияют на установку php
Интересно отметить, что изменения в c: \ xampp \ php \ php.ini ничего не значат - это НЕ ini, который влияет на установку php.
Следующие строки являются дополнениями, которые я внес в файл httpd.conf
#AccessFileName .htaccess
AccessFileName htaccess.txt
#
# The following lines prevent .htaccess and .htpasswd
# files from being viewed by Web clients.
#
#<Files ~ "^\.ht">
<Files ~ "^htaccess\.">
Order allow,deny
Deny from all
</Files>
<Directory "c:/xampp/htdocs">
#
# AllowOverride controls what directives may be placed in
# .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
Ниже приводится весь файл htaccess, содержащийся в:
c: \ xampp \ htdocs \ application \ htaccess.txt
<Files ~ "\.inc$">
Order deny,allow
Deny from all
</Files>
php_value default_charset "UTF-8"
php_value include_path ".;c:\xampp\htdocs\application\includes"
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value magic_quotes_runtime 0
php_value magic_quotes_sybase 0
php_value session.use_cookies 1
php_value session.use_only_cookies 0
php_value session.use_trans_sid 1
php_value session.gc_maxlifetime 3600
php_value arg_separator.output "&"
php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset="
Каталог include существует в указанном месте.
Когда я пытаюсь получить доступ к приложению, я получаю следующую ошибку:
Warning: require(include.general.inc) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\application\menu\logon.php on line 21
Неустранимая ошибка: require () [function.require]: Не удалось открыть обязательный файл 'include.general.inc' (include_path = '.; C: \ xampp \ php \ pear \ random') в C: \ xampp \ htdocs \ application \ menu \ logon.php в строке 21
Путь включения c .. \ random \ указан в файле php.ini, указанном выше. При установке xampp не удается разрешить другой путь включения, указанный в файле htaccess.txt.
Пожалуйста, помогите! Я предполагаю, что, вероятно, произошла ошибка с файлом httpd.conf ИЛИ файлом htaccess.txt ... но, похоже, он не читает файл htaccess. Я старался быть максимально тщательным, чтобы простить многословие поста.
Теперь я знаю, что можно обойти эту проблему, просто добавив include_path в файл php, но у меня не будет доступа к файлу php.ini в месте, где я планирую развернуть свое приложение. Однако я смогу запросить у администратора сервера файлы htaccess.
Обновление: переименовал htacces.txt в .htaccess и изменил соответствующие директивы в файле httpd.conf, и все, похоже, работает. Приложение предложило назвать htaccess.txt и исправленные директивы в httpd. Это явно неправильно (по крайней мере для стека xampp). Спасибо за помощь.
Кстати, использование ini_set () намного удобнее, если приложение необходимо развернуть в нескольких местах, поэтому спасибо за этот указатель.