index.php wird standardmäßig nicht geladen

Antworten:

153

Apache muss so konfiguriert sein, dass index.php als Indexdatei erkannt wird.

Der einfachste Weg, dies zu erreichen ..

  1. Erstellen Sie eine .htaccess-Datei in Ihrem Webstamm.

  2. Fügen Sie die Zeile hinzu ...

DirectoryIndex index.php

Hier ist eine Ressource zu diesem Thema ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Bearbeiten: Ich gehe davon aus, dass Apache so konfiguriert ist, dass .htaccess-Dateien zugelassen werden. Ist dies nicht der Fall, müssen Sie die Einstellung in der Konfigurationsdatei von Apache (httpd.conf) ändern.

John Himmelman
quelle
4
Es sollte sich wahrscheinlich in der Datei php.conf befinden, die Apache lädt.
Staticsan
Ich denke du meinst php.ini. Unabhängig davon erkennt sein Apache index.php nicht als Verzeichnisindexdatei. Ob die Verarbeitung von PHP-Dateien ein weiteres Problem der Apache-Konfiguration ist.
John Himmelman
1
Vergiss nicht, Apache neu zu starten !! wie ich es tat! : /
Navid Einackchi
102

Während das Hinzufügen von 'DirectoryIndex index.php' zu einer .htaccess-Datei möglicherweise funktioniert,

HINWEIS:

Im Allgemeinen sollten Sie niemals .htaccess-Dateien verwenden

Dies wird aus http://httpd.apache.org/docs/1.3/howto/htaccess.html zitiert.
Obwohl dies auf eine ältere Version von Apache verweist, glaube ich, dass das Prinzip immer noch gilt.

Das Hinzufügen der folgenden Elemente zu Ihrer httpd.conf (wenn Sie Zugriff darauf haben) wird als bessere Form angesehen, verursacht weniger Server-Overhead und hat genau den gleichen Effekt:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
M_M
quelle
4
Das ist alles in Ordnung und gut, wenn Sie Zugriff auf diese Datei haben
Hayden Thring
1
+1 dafür. Dies ist die bevorzugte Methode, es sei denn, Sie haben keinen Zugriff auf httpd.conf.
Matthew Johnson
Ich glaube, dass das Hinzufügen zur Standard-SSL-Konfigurationsdatei auch in Ordnung ist, wenn Sie HTTPS verwenden.
Alex W
44

Vermutlich würde ich sagen, dass der Verzeichnisindex auf index.html oder eine andere Variante eingestellt ist. Versuchen Sie Folgendes:

DirectoryIndex index.html index.php

Dadurch erhält index.html weiterhin Vorrang vor index.php (praktisch, wenn Sie eine Wartungsseite aufrufen müssen).

Ben Rowe
quelle
Meins sieht so aus, lädt aber leider die index.php herunter, anstatt sie auszuführen.
Webnet
@Webnet dann sollten Sie erwägen, Type und LoadModules in PHP zu ändern, damit es PHP liest [ stackoverflow.com/questions/5121495/…
Merey Nurlan
15

Dies könnte für jemanden hilfreich sein. Hier ist das Snippet von 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>

Jetzt wird nach der Datei index.html gesucht. Wenn sie nicht gefunden wird, wird nach der Datei index.php gesucht.

Maruf
quelle
3

Versuchen Sie, eine .htaccess-Datei mit den folgenden Anweisungen zu erstellen

DirectoryIndex index.php

Bearbeiten: Gibt es eigentlich kein "PHP-Apache" -Paket oder etwas, das Sie mit beiden installieren sollen?

animuson
quelle
3

Ich hatte das gleiche Problem mit einer Site auf unserer direkt vom Administrator gehosteten Site. Ich fügte hinzu

DirectoryIndex index.php

Als benutzerdefinierte httd-Erweiterung (die einer Site- httpdDatei Code hinzufügt ) wurde die Site dann index.phpstandardmäßig ausgeführt.

Phil Errington
quelle
2

Gleiches Problem für mich. Meine Lösung war, dass mod_dir nicht aktiviert war und apache2 beim Lesen der Direktive in meiner VirtualHost-Datei keinen Fehler ausgab:

DirectoryIndex index.html

Verwenden der Befehle:

sudo a2enmod dir
sudo sudo service apache2 restart

Das Problem wurde behoben.

Martlark
quelle
1
Ich denke du meinst a2enmod?
TR_SLimey
1

Zur Info: In einigen Apache2-Konfigurationen müssen Sie den DirectoryIndex-Befehl in mods_enabled / dir.conf hinzufügen (er befindet sich nicht in apache2.conf).

Zitun
quelle
1

Nachdem ich das alles gelesen und versucht hatte, es zu beheben, bekam ich eine einfache Lösung im Ubuntu-Forum ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Das Problem liegt beim libapache2-mod-php5-Modul. Aus diesem Grund lädt der Browser die Datei index.php herunter, anstatt die Webseite anzuzeigen. Mach Folgendes. Wenn sudo a2enmod php5 kein Modul zurückgibt, liegt das Problem bei libapache2-mod-php5. Löschen Entfernen Sie das Modul mit dem Befehl sudo apt-get --purge entfernen libapache2-mod-php5 Dann installieren Sie es erneut sudo apt-get installieren libapache2-mod-php5

Rupak Rokade
quelle
1

Ich hatte ein ähnliches Symptom. In meinem Fall hatte meine Idiotie jedoch ungewollt auch eine leere index.html-Datei im Webstammordner. Apache hat dies anstelle von index.php bereitgestellt, als ich index.php nicht explizit angefordert habe, da DirectoryIndexes wie folgt konfiguriert wurde mods-available/dir.conf:

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

Das heißt, 'index.html' wird in der Prioritätsliste vor 'index.php' angezeigt. Das Entfernen der Datei index.html aus dem Webstamm hat das Problem natürlich behoben. D'oh!

John Rix
quelle
1

Schritt für Schritt und vollständige Anleitung für Ubuntu 16.04.4 LTS und Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" und verschieben Sie index.php wie unten nach DirectoryIndex nach rechts und speichern Sie die Datei. Starten Sie dann den Apache-Server neu.

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

" service apache2 restart"

Wenn Sie dir.conf nicht sehen, müssen Sie es laden (google for how to)

Getan.

Dung
quelle
1

Dieser Beitrag mag alt sein, aber ich poste ihn nur, falls er einer anderen Person hilft. Ich würde nicht empfehlen, eine .htaccess-Datei in Ihrem Webstamm zu erstellen und den Index zu ändern. Ich finde es besser, den Schritten zu folgen

  1. Gehen Sie zum conf-Ordner Ihres Apache-Ordners

    C:\Apache24\conf

  2. Öffnen Sie die Datei mit dem Namen

    httpd.conf

  3. Gehen Sie zum Abschnitt

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Fügen Sie index.php hinzu, wie unten gezeigt

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

Auf diese Weise werden weiterhin index.html und index.php als Standardindex ausgewählt, wobei index.html jedoch Priorität eingeräumt wird, da index.html vor * index.php stand. Damit meine ich, dass Sie sowohl index.html als auch index.php im selben Verzeichnis haben. Die index.html wird als Standardindex verwendet, außer Sie schreiben ** index.php * vor index.hml

Ich hoffe es hilft jemandem ... Happy Coding

Ausgezeichneter Lawrence
quelle
1

Dieser funktioniert wie ein Zauber!

Zuerst

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

dann danach von

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

zu

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