файлы htaccess, php, включают каталоги и конфигурацию Windows XAMPP.
Вопрос
XAMPP упрощает настройку локального стека LAMP для Windows.Так что весьма разочаровывает, что включение файлов htaccess - это такой кошмар.
Моя проблема:
У меня есть PHP-приложение, которому требуется apache / php для поиска каталога /includes /, содержащегося в приложении.Для этого файлы htaccess должны быть разрешены в apache, и в файле htaccess должно быть точно указано, где находится каталог includes.
Проблема в том, что я не могу заставить свой apache config просматривать эти файлы 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="
Каталог includes существует в указанном расположении.
Когда я пытаюсь получить доступ к приложению, я получаю следующую ошибку:
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
Фатальная ошибка:требовать() [function.require]:Для неудачного открытия требуется 'include.general.inc' (include_path='.;C:\xampp\php\pear andom ') в C:\xampp\htdocs\application\menu\logon.php в строке 21
Путь включения c.. andom\ указан в файле 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() - гораздо более удобный способ, если приложение необходимо развернуть в нескольких местах, так что особенно спасибо за этот указатель.
Решение
- Зачем вам нужно переименовывать .htaccess в htaccess.txt
- Попробуйте задать include_path с помощью set_include_path() set_include_path() и посмотрим, поможет ли это (в качестве промежуточного исправления)
- Проверьте, какой php.ini использовать, с помощью phpinfo()
Другие советы
Вы можете изменять include_path для каждого запроса, используя ini_set() .Это позволило бы вообще избежать необходимости использования htaccess.
Мой htaccess отлично работает под управлением XAMPP - хотя некоторые модули по умолчанию отключены - вы уверены, что нужные вам модули включены?
Я думаю, что поисковая система, которую вы ищете, это:
Я предполагаю, что в xampp вам нужно включить AllowOverride (через .htaccess) в httpd.conf.Это простая мера безопасности, которая не позволяет новичкам устанавливать взломанную платформу: P
Вам необходимо включить AllowOverride All в основном файле http.conf.Загляните в XAMPP_DIR/apache/conf/http.conf)
Просто сделайте это:
open file ...\xampp\apache\conf\httpd.conf
find line "LoadModule rewrite_module modules/mod_rewrite.so"
if here is a # before this line remove it.(remove comment)
его рабочая