htaccess, PHP, inclui diretórios e janelas XAMPP pesadelo configuração
Pergunta
XAMPP facilita a configuração de uma pilha LAMP local para janelas de uma brisa. Por isso é muito decepcionante que permite htaccess é um pesadelo.
Meu problema:
Eu tenho uma aplicação PHP que requer apache / php para procurar um / includes / diretório contido dentro do aplicativo. Para fazer isso, htaccess devem ser permitidos em apache eo arquivo htaccess deve especificar exatamente onde o inclui o diretório é.
O problema é que eu não posso começar minha configuração do apache para visualizar estes arquivos .htaccess. Eu tive grandes dificuldades instalar este aplicativo em uni e obter os admins lá para ajudar com a configuração. Isso não deve ser tão difícil, mas por algum motivo eu simplesmente não consegue obter apache para jogar bonito.
Esta é a minha configuração:
c: \ xampp
c: \ xampp \ htdocs
c: \ xampp \ apache \ conf \ httpd.conf - onde eu fiz as alterações listadas abaixo
c: \ xampp \ apache \ bin \ php.ini - onde alterações neste arquivo afetam o
instalação php
É interessante notar que c: \ xampp \ php \ php.ini mudanças significam nada - esta não é a ini que afeta a instalação php.
As seguintes linhas são adições que eu fiz para o arquivo 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>
A seguir está todo o arquivo .htaccess contido em: 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="
A inclui existe diretório do local especificado.
Quando tento acessar o aplicativo eu recebo o seguinte erro:
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
erro fatal: exigem () [function.require]: Falha abertura necessária 'include.general.inc' (include_path = '.; C: \ xampp \ php \ pêra \ aleatório') em C: \ xampp \ htdocs \ application \ Menu \ logon.php na linha 21
O caminho de inclusão c .. \ aleatória \ é especificado no arquivo php.ini listados acima. O xampp instalação falhar para permitir que outro caminho de inclusão conforme especificado no arquivo htaccess.txt.
ajuda por favor! Eu estou supondo que provavelmente há um erro com o httpd.conf ou o arquivo htaccess.txt .. mas não parece ser a leitura do arquivo .htaccess. Eu tentei ser o mais rigoroso possível, para perdoar a verbosidade do post.
Agora eu sei que uma solução poderia ser a de simplesmente adicionar o include_path para o arquivo php, mas eu não vou ter acesso ao arquivo php.ini no plano local I para implantar meu aplicativo. Vou, no entanto, ser capaz de pedir o administrador do servidor permite que os arquivos .htaccess.
Update: htacces.txt renomeado para .htaccess e ammended as diretivas apropriadas no arquivo httpd.conf e tudo parece funcionar. A aplicação sugeriu a nomeação de htaccess.txt e as directivas ammended no httpd. Estes são obviamente errado (pelo menos para uma pilha xampp). Obrigado pela ajuda.
A propósito, usando ini_set () é uma forma mais amigável muito se as necessidades de aplicativos para ser implantado em vários locais por isso obrigado especialmente para esse ponteiro.
Solução
- Por que você precisa para mudar o nome .htaccess para htaccess.txt
- Tente configurar a include_path usando set_include_path () e ver se isso ajuda (como uma correção intermediária)
- Verifique qual php.ini para usar através de uma phpinfo ()
Outras dicas
Você pode alterar o include_path em cada solicitação usando ini_set (). Isso evitaria ter que usar htaccess em tudo.
O meu htaccess trabalha sob XAMPP bem - apesar de alguns módulos são desativados por padrão - você está certo de que os módulos que você quer estão habilitados?
Eu acho que o searchprase que você está procurando é:
Meu palpite é que dentro xampp É necessário habilitar o AllowOverride (através de um .htaccess) em httpd.conf. É uma medida de segurança simples que impede novatos de instalar uma plataforma hackable: P
Você precisa habilitar o AllowOverride All in arquivo httpd.conf principal. Olhe para dentro XAMPP DIR / apache / conf / http.conf)
Simplesmente Faça o seguinte:
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)
seu trabalho