файлы htaccess, php, включают каталоги и конфигурацию Windows XAMPP.

StackOverflow https://stackoverflow.com/questions/152823

Вопрос

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

Это было полезно?

Решение

  1. Зачем вам нужно переименовывать .htaccess в htaccess.txt
  2. Попробуйте задать include_path с помощью set_include_path() set_include_path() и посмотрим, поможет ли это (в качестве промежуточного исправления)
  3. Проверьте, какой 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)

его рабочая

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top