htaccess файлы, php, включает в себя каталоги и окна XAMPP конфигурации кошмар

XAMPP делает настройку локального стека LAMP для Windows. Поэтому неудивительно, что включение htaccess-файлов – такой кошмар.

Моя проблема:
У меня есть приложение PHP, которое требует, чтобы apache / php искал каталог / includes /, содержащийся в приложении. Для этого файлы htaccess должны быть разрешены в apache, а файл htaccess должен точно указывать, где находится каталог include.

Проблема в том, что я не могу получить конфигурацию apache для просмотра этих файлов htaccess. У меня были серьезные проблемы с установкой этого приложения в uni и получение администраторов там, чтобы помочь с настройкой. Это не должно быть так сложно, но по какой-то причине я просто не могу заставить apache играть хорошо.

Это моя настройка:

C: \ XAMPP
C: \ XAMPP \ HTDOCS
c: \ xampp \ apache \ conf \ httpd.conf – где я внес изменения, перечисленные ниже
c: \ xampp \ apache \ bin \ php.ini – где изменения в этом файле влияют на установку php
Интересно отметить, что изменения c: \ xampp \ php \ php.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 \ меню \ 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 () является гораздо более дружелюбным способом, если приложение нужно развернуть в нескольких местах, поэтому особенно спасибо за этот указатель.

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

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

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

Я думаю, что поисковый запрос, который вы ищете, это:

AllowOverride All

Я предполагаю, что в 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) 

работает