web-dev-qa-db-fra.com

index.php ne se charge pas par défaut

Je viens d'installer CentOS, Apache et PHP. Lorsque je visite mon site http://example.com/myapp/ , le message "interdit". Par défaut, cela ne charge pas le fichier index.php.

Lorsque je visite http://example.com/myapp/index.php , cela fonctionne bien.

Une idée de comment résoudre ce problème? 

95
001

Apache doit être configuré pour reconnaître index.php en tant que fichier d'index.

Le moyen le plus simple d'y parvenir ..

  1. Créez un fichier .htaccess dans votre racine Web.

  2. Ajouter la ligne ...

DirectoryIndex index.php

Voici une ressource en la matière ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Edit: Je suppose qu'Apache est configuré pour autoriser les fichiers .htaccess. Si ce n'est pas le cas, vous devrez modifier le paramètre dans le fichier de configuration d'Apache (httpd.conf).

143
John Himmelman

Bien que l’ajout de 'DirectoryIndex index.php' à un fichier .htaccess puisse fonctionner,

REMARQUE:

En général, vous ne devriez jamais utiliser de fichiers .htaccess

Ceci est cité de http://httpd.Apache.org/docs/1.3/howto/htaccess.html
Bien que cela se réfère à une version plus ancienne d’Apache, je crois que le principe s’applique toujours.

Ajouter ce qui suit à votre httpd.conf (si vous y avez accès) est considéré comme une meilleure forme, entraîne moins de surcharge du serveur et a exactement le même effet:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
95
M_M

En un mot, je dirais que l'index du répertoire est défini sur index.html, ou une variante, essayez:

DirectoryIndex index.html index.php

Cela donnera toujours à index.html la priorité sur index.php (pratique si vous devez afficher une page de maintenance)

38
Ben Rowe

Cela pourrait être utile à quelqu'un . Voici l'extrait de httpd.conf (Apache version 2.2 windows)

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>

maintenant, cela cherchera le fichier index.html s'il n'est pas trouvé, il cherchera index.php.

12
Maruf

J'ai eu le même problème avec un site sur notre site hébergé administrateur direct. J'ai ajouté

DirectoryIndex index.php

en tant qu'extension httd personnalisée (qui ajoute du code à un fichier de sites httpd) et le site a ensuite exécuté le index.php par défaut.

3
Phil Errington

Essayez de créer un fichier .htaccess avec ce qui suit

DirectoryIndex index.php

Edit: En fait, n'y a-t-il pas un paquet 'php-Apache' ou quelque chose que vous êtes censé installer avec les deux?

3
animuson

J'ai eu un symptôme similaire. Dans mon cas cependant, mon idiotie avait involontairement aussi un fichier index.html vide dans le dossier racine Web. Apache servait cela plutôt que index.php quand je n'ai pas explicitement demandé index.php, car DirectoryIndex était configuré comme suit dans mods-available/dir.conf:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

C'est-à-dire que "index.html" est placé devant "index.php" dans la liste des priorités. Supprimer le fichier index.html de la racine Web a naturellement résolu le problème. D'oh!

1
John Rix

Après avoir lu tout cela et essayé d’y remédier, j’ai eu une solution simple sur le forum Ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Le problème réside dans le module libapache2-mod-php5. C'est pourquoi le navigateur télécharge le fichier index.php plutôt que d'afficher la page Web. Faites ce qui suit. Si Sudo a2enmod php5 renvoie le module n'existe pas, le problème vient de libapache2-mod-php5. Purger supprimer le module avec la commande Sudo apt-get --purge supprimer libapache2-mod-php5 Ensuite, installez-le à nouveau Sudo apt-get installer libapache2-mod-php5

1
Rupak Rokade

Pour info: dans certains conf Apache2 vous devez ajouter la commande DirectoryIndex dans mods_enabled/dir.conf .__

1
Zitun

Pas à pas et instructions complètes pour Ubuntu 16.04.4 LTS et Apache/2.4.18

"Sudo -s"

"cd /etc/Apache2/mods-enabled"

"vi dir.conf" et déplacez index.php juste après DirectoryIndex comme ci-dessous, sauvegardez le fichier puis redémarrez le serveur Apache.

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm 

"service Apache2 restart"

Si vous ne voyez pas dir.conf, vous devrez le charger (google pour savoir comment faire)

Terminé.

1
Dung

Celui-ci fonctionne comme un charme!

Premier

<IfModule dir_module>
    DirectoryIndex index.html
     DirectoryIndex index.php
</IfModule>

puis après celui de  

<Files ".ht*">
    Require all denied
</Files>

à

 <Files ".ht*">
    Require all granted
</Files>
1
MelPogz

Même problème pour moi. Ma solution était que mod_dir n'était pas activé et Apache2 n'émettait pas d'erreur lors de la lecture de la directive dans mon fichier VirtualHost:

DirectoryIndex index.html

En utilisant les commandes:

Sudo a2ensite dir
Sudo sudo service Apache2 restart

Correction du problème.

0
Martlark

Ce message est peut-être ancien, mais je le publie simplement au cas où cela aiderait une autre personne. Je ne conseillerais pas de créer un fichier .htaccess dans votre racine Web et de modifier l'index. Je pense qu'il vaut mieux suivre les étapes

  1. Allez dans le dossier conf de votre dossier Apache. Le mien est 

    C:\Apache24\conf 

  2. Ouvrez le fichier nommé 

    httpd.conf

  3. Aller à la section 

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
    
  4. Ajoutez index.php comme indiqué ci-dessous

     <IfModule dir_module>
      DirectoryIndex index.html index.php
    
    </IfModule>
    

De cette façon, il choisit toujours index.html et index.php comme index par défaut, mais en donnant la priorité à index.html car index.html est venu avant * index.php. Je veux dire par là que vous avez index.html et index.php dans le même répertoire, index.html sera utilisé comme index par défaut sauf que vous écrivez ** index.php * avant index.hml

J'espère que ça aide quelqu'un ... Bon codage

0
Excellent Lawrence