Erste leere PHP-Seite über Apache
In einem neu-setup digitalOcean cloud-server (CentOS), das ich installiert habe php und Apache. Der webserver läuft einwandfrei:
[root@a2m5cent01 httpd]# service httpd status
httpd (pid 11232) is running...
[root@a2m5cent01 httpd]# php --version | head -1
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Aber browser zeigt leere Seiten (weiße Seite) wenn ich versuche, Sie zu besuchen, jede php-Seite.
Hier ist, was ich getan habe, so weit zu beheben:
- Eine Seite erstellt mit folgendem Inhalt:
<?php phpinfo(); ?>
. Es zeigt eine leere Seite bei der Anzeige vom browser. - Nur um sicherzustellen, apache verweist auf das richtige Verzeichnis, platziert eine statische
.html
Seite gibt es, und sah es auch ganz gut im browser, so dass der apache arbeitet und das Verzeichnis richtig ist. - In
/etc/php.ini
geändertdisplay_errors
Richtlinie zuOn
. Immer noch leere Seite - In der Apache config Datei (
/etc/httpd/conf/httpd.conf
) fand diese LinieInclude conf.d/*.conf
. Innerhalbconf.d
Verzeichnis, es ist einphp.conf
- Datei mit der Zeile:
LoadModule php5_module modules/libphp5.so
. Sichergestellt hat, dass diese .also die Datei tatsächlich existiert in diesem Ort. - In der gleichen Datei habe ich diese beiden Linien als gut:
AddHandler php5-script .php
undAddType text/html .php
- Ausgeführt, die php-Seite von CLI, es funktioniert - also funktioniert php lokal.
Dann, warum ist es zeigt immer eine leere/weiße Seite über den browser? Was bin ich?
BEARBEITEN
Basierend auf Anregungen von @Nathan,
- Ich überprüft Apache-error-log-Datei konnte nicht sehen, keine Fehler
da berichtet. - Meine
/etc/php.ini
sagt, php error_log liegt alssyslog
. So ich habe/var/log/messages
konnte aber keine PHP-Fehlermeldung - Als Nächstes zog ich ein paar normale
HTML
in der php-Datei mitphpinfo()
nennen. Interessant fand ich, dass auch die normalen HTML-Texte werden auch nicht kommen. Es noch erzeugt leere Seite. - Dann überprüfte ich Apache
access
melden. Überraschung! Es gibt keineGET
Anfrage für eine PHP-Dateien, die ich versuchte zu laden im browser. Aber BEKOMMEN Anfrage für alle nicht-php - Dateien sind dort mit 200 return-code.
Apache nicht auch die Protokollierung jeder Antrag auf Zugriff für PHP-Dateien. Keine Ahnung warum würde das passieren?
- Apache ist?
- Ich dachte, ich antwortete, dass in den ersten Absatz meiner Frage. Ja, ist es.
- haben Sie bestätigt Ihre http/php-error-logs zeigen keine Nachricht? auch bei den kicks würde ich fügen Sie einige HTML-vor und nach der Ausgabe von phpinfo (), um zu bestätigen, wird die Seite geladen, aber PHP wird nicht ausgeführt.
- Gute Punkte! Ich habe aktualisiert mein Frage mit den details. Anscheinend ist Apache nicht selbst die Registrierung jeder
GET
Anfrage für php-Dateien... - seine interessant, dass eine Anforderung gar nicht angemeldet. erinnern Sie sich, welche Befehle Sie ausgeführt haben, und/oder welche Pakete Sie verwendet haben, mit der Installation von PHP? Oder kann es einfacher sein zu laufen
yum list installed | grep "php" | less
um zu sehen, welche PHP-Pakete installiert sind. - php ist sicherlich nicht konfiguriert apache. Ich Stand vor diesem problem in meinem vps zu.
- Was meinst du? Wie bestätige ich das? Wie hast du dein problem lösen?
- vps bedeutet virtual server. kurz gesagt, habe ich versucht, die Installation von apache mit php in meinem centos 6 os, aber es zeigte immer leer php, ich.e,, könnte es nicht verstehen, php-Dateien. dann entfernte ich alle damit verbundenen Dinge wie apache,php usw installiert und von Grund auf, wie ich sagte, in meine aktualisierte Antwort. Auch, Sie tun müssen, paar thhings.
- mit Ihrem Befehl, ich habe diese 3 Pakete:
php
,php-cli
,php-common
Du musst angemeldet sein, um einen Kommentar abzugeben.
überprüfen Sie Ihre phpinfo () - Skript.
fehlt das "php" hinter dem ersten "?" wird eine leere Seite
Ich denke, dass Ihre php-installation mit apache ist fehlerhaft. Das ist, warum Sie nicht sehen können, jede php-Seite in Ihrem webserver. Reinigen entfernen Sie alle vorhandenen apps, wie httpd,php,php-fpm,php-cli, etc. und versuchen, clean isntall in dieser Reihenfolge
dann stellen Sie sicher, starten Sie Ihre httpd-server.
Installieren mod_fastcgi:
Den Dienst starten:
Den Apache Neu Starten:
5. Konfiguration von Apache mit PHP-FPM
Öffnen Sie die fastcgi.conf-Datei:
Fügen Sie diese am Ende der Datei:
Danach Suche nach "FastCgiWrapper" und stellen Sie sicher, dass es auf "off" eingestellt, dann speichern Sie die Datei.
/Usr/lib/cgi-bin/- Verzeichnis muss existieren, damit wir es schaffen:
Wenn mod_php installiert und aktiviert, die wir brauchen, um es zu deaktivieren, so öffnen Sie die Konfiguration unter /etc/httpd/conf.d/php.conf:
Kommentar aus der AddHandler und AddType-Zeilen, so sieht es aus wie hier:
Speichern Sie die Datei und starten Sie Apache neu:
Sind, navigieren Sie zu der php-Datei direkt? Oder sind Sie nur gehen, um das Verzeichnis root?
Wenn die später, Apache möglicherweise nicht erkennen .php für das Verzeichnis index.
Testen, versuchen Sie, erstellen Sie eine .htaccess-Datei in deinem web-root, enthält die folgende Zeile:
DirectoryIndex
ist bereits gesetzt.Ich habe das gleiche Problem...
Das problem ist in der iptables. (Es scheint, wie es)
Versuchen mit:
Versuchen Sie dann, um neu zu laden Sie die Seite erneut.
Hätten Sie eine andere Lösung gibt, bitte teilen.
[Bearbeiten]
Neustart der iptables-Dienst ist, für mich zu arbeiten.
Versuchen:
Zunächst sollten Sie überprüfen Sie die Berechtigungen der Datei.
Wenn Sie keinen Lesezugriff auf öffentliche, Apache erzeugt eine leere Seite, ohne dass irgendwelche Fehler.
Da sieht alles an seinen default-Zustand ist, haben Sie überprüft, das Teil nur zur Bestätigung
cat /etc/php.ini | grep log_errors
Wenn log_errors ist deaktiviert, aktivieren Sie es und überprüfen Sie diese unten log nach dem Neustart von httpd.
/var/log/httpd/error_log
--
Überprüfen Sie auch diesen Teil aus der php-Konfiguration.
cat /etc/php.ini | grep error_reporting
Dieser Wert sollte standardmäßig aktiviert, so dass display_errors arbeiten.
error_reporting = E_ALL
log_errors = On
underror_reporting = E_ALL & ~E_DEPRECATED
Sorry für repost eines alten thread...das ist wichtig.
Ich hatte auch diese Probleme, wo keine html-Antwort war die Ausgabe
Nach der überprüfung php.ini oder meiner apache-conf-Dateien und wurde noch erhalte keine Ausgabe, ich fand später heraus, dass ich durch das unterdrücken der Fehler von include /require von einer Klasse, mit
@
war, die verschachtelt in einer Konstruktor-Funktion. Es war ein Syntaxfehler in der Datei enthalten, der nicht mehr alle Ausgaben zusammen, wenn Fehler ausgelöst wurden.So, überprüfen Sie Ihre Handler erste.
Wenn Sie speichern Sie alle Ihre Ausgabe in vars ersten und Sie sind, einschließlich der verschiedenen Skripte ersten, die scheitern, werden Sie sehen diesen Fehler. Wenn Sie keine Optionsdialogfelder für " Datei-handler-Fehler, erhalten Sie einen leeren Bildschirm, wenn Sie einen syntax-Fehler in der Datei.
Suchen Sie Ihre Dateien für alle Instanzen
@
in Ihrem php-code. Dann biegen Sie@include "/path_to/script.php";
zuinclude "/path_to/script.php";
oder irgendetwas@$foo
in$foo
als solche var möglicherweise auf eine Abhängigkeit, die dazu führt, dass Ihr Skript bis zum Ende mit nichts zeigen, sind in der httpd-error-log oder in der http-Antwort.