Файлы htaccess, php, включают каталоги и кошмар конфигурации Windows XAMPP - PullRequest
1 голос
/ 30 сентября 2008

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 "&amp;"
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 () намного удобнее, если приложение необходимо развернуть в нескольких местах, поэтому спасибо за этот указатель.

Ответы [ 6 ]

4 голосов
/ 30 сентября 2008
  1. Зачем вам нужно переименовывать .htaccess в htaccess.txt
  2. Попробуйте установить include_path с помощью set_include_path () и посмотрите, поможет ли это (как промежуточное исправление)
  3. Проверьте, какой php.ini использовать через phpinfo ()
1 голос
/ 30 сентября 2008

Вы можете изменять include_path для каждого запроса, используя ini_set (). Это позволит вообще не использовать htaccess.

0 голосов
/ 09 сентября 2015

Просто сделайте это:

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)

работает

0 голосов
/ 01 октября 2008

Вам необходимо включить AllowOverride All в основном файле http.conf. Загляните внутрь XAMPP_DIR / apache / conf / http.conf)

0 голосов
/ 30 сентября 2008

Я думаю, что искомая поисковая фраза:

AllowOverride All

Я предполагаю, что в xampp вам нужно включить AllowOverride (через .htaccess) в httpd.conf. Это простая мера безопасности, которая не позволяет новичкам устанавливать взломанную платформу: P

0 голосов
/ 30 сентября 2008

Мой htaccess нормально работает под XAMPP - хотя некоторые модули по умолчанию отключены - вы уверены, что нужные модули включены?

...