Les fichiers htaccess, php, incluent les répertoires et le cauchemar de la configuration de Windows XAMPP

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

Question

XAMPP facilite la configuration d’une pile LAMP locale pour Windows. Il est donc assez décevant de constater que l'activation de fichiers htaccess est un cauchemar.

Mon problème:
J'ai une application PHP qui nécessite apache / php pour rechercher un répertoire / includes / contenu dans l'application. Pour cela, les fichiers htaccess doivent être autorisés dans apache et le fichier htaccess doit spécifier exactement où se trouve le répertoire includes.

Le problème, c’est que je ne parviens pas à voir mes fichiers htaccess avec ma configuration apache. J'avais de gros soucis d'installer cette application à l'université et de faire venir les administrateurs pour aider à la configuration. Cela ne devrait pas être si difficile, mais pour une raison quelconque, je ne peux tout simplement pas obtenir Apache pour jouer gentil.

Voici ma configuration:

c: \ xampp
c: \ xampp \ htdocs
c: \ xampp \ apache \ conf \ httpd.conf - où j'ai apporté les modifications répertoriées ci-dessous

c: \ xampp \ apache \ bin \ php.ini - les modifications de ce fichier affectent l'installation php
Il est intéressant de noter que les changements dans c: \ xampp \ php \ php.ini ne signifient rien - ce n'est PAS l'ini qui affecte l'installation de php.

Les lignes suivantes sont des ajouts que j'ai apportés au fichier 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>

Ce qui suit est l’ensemble du fichier htaccess contenu dans: c: \ xampp \ htdocs \ application \ htaccess.txt

<Files ~ "\.inc
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
quot;> 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="

Le répertoire includes existe à l'emplacement spécifié.

Lorsque j'essaie d'accéder à l'application, le message d'erreur suivant s'affiche:

<*>

Erreur fatale: require () [function.require]: ouverture infructueuse requise 'include.general.inc' (include_path = '.; C: \ xampp \ php \ pear \ random') dans C: \ xampp \ htdocs \ application \ menu \ logon.php à la ligne 21

Le chemin d’inclusion c .. \ random \ est spécifié dans le fichier php.ini mentionné ci-dessus. L'installation de xampp n'autorise pas un autre chemin d'inclusion, comme spécifié dans le fichier htaccess.txt.

S'il vous plaît aider! Je suppose qu'il y a probablement une erreur avec le fichier httpd.conf OU le fichier htaccess.txt .. mais il ne semble pas lire le fichier htaccess. J'ai essayé d'être aussi complet que possible, alors pardonnez la verbosité du message.

Maintenant, je sais qu'une solution de contournement pourrait consister simplement à ajouter le chemin include_path au fichier php, mais je ne vais pas avoir accès au fichier php.ini à l'emplacement où je compte déployer mon application. Je pourrai cependant demander au serveur d’administrer les fichiers htaccess.

Mise à jour: renommé htacces.txt en .htaccess et modifié les directives appropriées dans le fichier httpd.conf et tout semble fonctionner. L'application a suggéré de nommer htaccess.txt et les directives modifiées dans le fichier httpd. Celles-ci sont évidemment fausses (au moins pour une pile xampp). Merci pour l'aide.

Au fait, utiliser ini_set () est une méthode beaucoup plus conviviale si l'application doit être déployée à plusieurs endroits. Merci particulièrement pour ce pointeur.

Était-ce utile?

La solution

  1. Pourquoi devez-vous renommer .htaccess en htaccess.txt
  2. Essayez de définir include_path avec set_include_path () et voyez si cela vous aide (en tant que correctif intermédiaire).
  3. Vérifiez le php.ini à utiliser via un phpinfo ()

Autres conseils

Vous pouvez modifier le chemin include_path à chaque demande en utilisant ini_set (). Cela éviterait de devoir utiliser htaccess.

Mon htaccess fonctionne correctement sous XAMPP - bien que certains modules soient désactivés par défaut - êtes-vous sûr que les modules que vous souhaitez sont activés?

Je pense que le critère de recherche que vous recherchez est:

Autoriser tout sur

À mon avis, dans xampp, vous devez activer AllowOverride (via un fichier .htaccess) dans httpd.conf. Il s’agit d’une mesure de sécurité simple qui empêche les débutants d’installer une plate-forme piratable: P

Vous devez activer AllowOverride All dans le fichier principal httpd.conf. Regardez dans XAMPP FOR / apache / conf / http.conf)

Faites simplement ceci:

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)

son fonctionnement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top