index.php ne se charge pas par défaut

Réponses:

153

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 à ce sujet ...
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)

John Himmelman
la source
4
Il devrait probablement se trouver dans le fichier php.conf qu'apache charge.
staticsan
Je pense que vous voulez dire php.ini. Quoi qu'il en soit, son apache ne reconnaît pas index.php comme un fichier d'index de répertoire. La gestion des fichiers php est-elle un autre problème de configuration d'Apache.
John Himmelman
1
n'oubliez pas de redémarrer apache !! comme je l'ai fait! : /
Navid Einackchi
102

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

REMARQUE:

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

Ceci est cité sur http://httpd.apache.org/docs/1.3/howto/htaccess.html
Bien que cela se réfère à une ancienne version d'apache, je pense que le principe s'applique toujours.

L'ajout de 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>
M_M
la source
4
tout va bien si vous avez accès à ce fichier
Hayden Thring
1
+1 pour ça. C'est la méthode préférée sauf si vous n'avez pas accès à httpd.conf.
Matthew Johnson
Je pense que l'ajout de cela au fichier de configuration default-ssl est également très bien, si vous utilisez HTTPS.
Alex W du
44

À une supposition, 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 la priorité à index.html sur index.php (pratique si vous avez besoin de lancer une page de maintenance)

Ben Rowe
la source
Le mien ressemble à ceci mais télécharge malheureusement le fichier index.php au lieu de l'exécuter.
Webnet
@Webnet, alors vous devriez envisager de changer Type et LoadModules en php pour qu'il lise php [ stackoverflow.com/questions/5121495/…
Merey Nurlan
15

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.

Maruf
la source
3

Essayez de créer un fichier .htaccess avec les éléments suivants

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?

animuson
la source
3

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

DirectoryIndex index.php

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

Phil Errington
la source
2

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

Utilisation des commandes:

sudo a2enmod dir
sudo sudo service apache2 restart

Correction du problème.

Martlark
la source
1
Je pense que tu veux dire a2enmod?
TR_SLimey
1

Pour info: dans certaines conf Apache2, vous devez ajouter la commande DirectoryIndex dans mods_enabled / dir.conf (elle ne se trouve pas dans apache2.conf)

Zitun
la source
1

Après avoir lu tout cela et essayé de le réparer, 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. Procédez comme suit. Si sudo a2enmod php5 renvoie le module n'existe pas, le problème vient de libapache2-mod-php5. Purge supprimez le module avec la commande sudo apt-get --purge remove libapache2-mod-php5 Puis réinstallez-le sudo apt-get install libapache2-mod-php5

Rupak Rokade
la source
1

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

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

Autrement dit, «index.html» apparaît avant «index.php» dans la liste des priorités. La suppression du fichier index.html de la racine Web a naturellement résolu le problème. Oh!

John Rix
la source
1

Instructions pas à pas et 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 et enregistrez 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é.

Bouse
la source
1

Ce message est peut-être vieux mais je le publie simplement au cas où il 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-y 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 à la fois index.html et index.php dans le même répertoire, l'index.html sera utilisé comme index par défaut sauf que vous écrivez ** index.php * avant index.hml

J'espère que cela aide quelqu'un ... Happy Coding

Excellent Lawrence
la source
1

Celui-ci fonctionne comme un charme!

Première

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

puis après cela de

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

à

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