Betriebssystem- und Serverinformationen:
Ich hatte zuvor PHP 5.3.x installiert, entschied mich jedoch für ein Upgrade. Ich deinstallierte zuerst php 5.3.x und installierte dann php 5.5.1, aber nach Abschluss der Installation analysierte Apache die gerade heruntergeladenen PHP-Dateien nicht. Ich habe ähnliche Fragen hier in stackoverflow geprüft, aber bisher hat mir keine geholfen.
Für den Datensatz habe ich die folgenden Zeilen in meiner httpd.conf und php.conf, die PHP funktionieren lassen sollten, aber nicht:
AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php
Ich würde mich über jede Hilfe sehr freuen. Vielen Dank.
BEARBEITEN:
Ich habe diese Zeilen in der php.conf
<IfModule !worker.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
BEARBEITEN:
Durch das Entfernen der
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
Apache lädt die Datei nicht mehr herunter. Jetzt zeigt Apache den Quellcode, aber nicht alles ist nur ein Teil davon. Ich fügte hinzu
AddType text/html .php
aber kein glück.
Der korrekte AddType für PHP ist application/x-httpd-php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Stellen Sie außerdem sicher, dass Ihr PHP-Modul geladen ist
LoadModule php5_module modules/mod_php55.so
Wenn Sie Apache konfigurieren, versuchen Sie, die Seite in einem anderen Browser anzuzeigen. Ich hatte Tage, an denen Chrome hartnäckig das Ergebnis zwischenspeichert, und der Quellcode wird ständig heruntergeladen, während es in einem anderen Browser in Ordnung ist.
Nachdem ich viel gekämpft hatte, habe ich das Problem endlich gelöst.
Wenn Sie aufgefordert werden, eine .php
-Datei herunterzuladen, anstatt sie auszuführen, ist hier die perfekte Lösung: Ich gehe davon aus, dass Sie PHP5 bereits installiert haben und trotzdem diesen Fehler erhalten.
$ Sudo su
$ a2enmod php5
Das ist es.
Wenn Sie immer noch den Fehler erhalten:
Config file php5.conf not properly enabled: /etc/Apache2/mods-enabled/php5.conf is a real file, not touching it
dann machen Sie folgendes:
Es stellt sich heraus, dass Dateien nicht in mods-enabled
gespeichert werden sollten, sondern eher in mods-available
. In mods-enabled sollte dann ein Symlink erstellt werden, der auf die in mods-available gespeicherte Datei verweist.
Zuerst das Original entfernen:
$ mv /etc/Apache2/mods-enabled/php5.conf /etc/Apache2/mods-available/
Dann erstellen Sie den symbolischen Link:
$ ln -s /etc/Apache2/mods-available/php5.conf /etc/Apache2/mods-enabled/php5.conf
Ich hoffe dein Problem ist gelöst.
Ich bin heute auf dieses Problem gestoßen und keine der beschriebenen Lösungen funktionierte für mich. Hier ist also eine andere mögliche Ursache:
Wenn du sowas hast
AddHandler x-mapp-php6 .php3 .php4 .php .phtml
in einer .htaccess
-Datei Ihres Webinhaltsordners können Ihre PHP -Skripts nicht mehr funktionieren. In meinem Fall kannte der Server den Typ x-mapp-php6
nicht, da diese .htaccess
-Datei etwas war, das ich von einem anderen Web-Host importierte, als ich den Inhalt der Website übertrug.
Das Entfernen der AddHandler
-Zeile aus der .htaccess
-Datei löste dies für mich.
Dies kann auf die fehlenden Module zurückzuführen sein, die für Ihr PHP erforderlich sind Wenn Sie PHP 7 installiert haben, suchen Sie nach verfügbaren PHP 7-Modulen
Sudo apt-cache search php7-*
Der obige Befehl listet alle verfügbaren PHP7-Module für die Installation auf ..__ Sie können mit der Installation von Modulen wie
Sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
Bitte werfen Sie einen Blick auf Ihre Addtyp-Direktiven.
Es sieht für mich so aus, als würde Apache dem Browser mitteilen, dass er einen Dokumenttyp der Anwendung/PHP für Skripts mit Erweiterungen wie .php5 sendet. Tatsächlich soll Apache dem Browser mitteilen, dass das Skript Text/HTML ausgibt.
Bitte versuchen Sie das:
AddType text/html .php
In Bezug auf den obigen Vorschlag sollten Sie dem Browser mitteilen, dass Sie ein PHP - Skript ausgeben: Es schien mir eine ungewöhnliche Idee zu sein. Ich habe gegoogelt und festgestellt, dass es im Internet ziemlich viele Diskussionen darüber gibt. Offenbar gibt es Fälle, in denen Sie vielleicht sagen möchten, dass Sie ein PHP -Skript senden (obwohl Apache das Skript ausführen und Text/html ausgeben soll), und es gibt auch Fälle, in denen der Browser dies nicht tut diesen spezifischen Mime-Typ erkennen.
Das Löschen Ihres Browser-Cache ist immer eine gute Idee.
Falls es hilfreich ist, hier eine Kopie meiner /etc/httpd/conf.d/php.conf -Datei von einem Server, auf dem CentOS 5.9 läuft:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
Wenn Ihr .htaccess so etwas hat ... AddHandler-Anwendung/x-httpd-php53 .php .php5 .php4 .php3 Dann kommentieren Sie es und versuchen Sie es erneut zu aktualisieren.
Ich habe das gleiche Problem. Apache lädt PHP-Dateien nicht von einer bestimmten Website, sondern lädt sie nur herunter. Ich habe diesen Beitrag und die Antworten gelesen und ich habe gesehen, dass ich diese Zeile an der letzten Stelle der .htaccess-Datei habe:
AddHandler x-mapp-php5.5 .php
Ich habe es kommentiert und alles funktioniert gut.
Dank an alle !!!
Ich hatte zuvor ein ähnliches Problem, nachdem ich ein Upgrade von 5.3 auf 5.4 vorgenommen hatte. Aber mein Setup sieht ein wenig anders aus, als dass ich Debian betreibe und fcgid zum Server der PHP - Seiten und nicht das PHP5 Apache/cgi-Modul verwende. welches mit meinem fcgid-Setup kollidierte und PHP -Dateien nicht mehr ausführen würde.
Ich musste das Apache-Modul deaktivieren und Apache neu starten
a2dismod php5_cgi
/etc/init.d/Apache2 restart
Nachdem das php5_cgi-Modul aus dem Weg geräumt war, konnte fcgid wieder PHP -Seiten bereitstellen.
Falls jemand php7 in einer Linux-Umgebung verwendet
Stellen Sie sicher, dass Sie php7 aktivieren
Sudo a2enmod php7
Starten Sie den MySQL-Dienst und Apache neu
Sudo systemctl restart mysql
Sudo systemctl restart Apache2
Es ist auch möglich, dass Nginx ausgeführt wird, der PHP-Modus jedoch für die Ausführung mit Apache eingerichtet ist. Um zu überprüfen, führen Sie service nginx status
und service Apache2 status
aus, um zu sehen, welcher gerade läuft. Falls nginx ausgeführt wird und Apache nicht, führen Sie einfach Sudo service nginx stop; Sudo service Apache2 start
aus, und der Server stellt nun erwartungsgemäß PHP-Dateien bereit.
Ich hatte dieses Problem. Es stellte sich heraus, dass sowohl Nginx als auch Apache installiert waren und beim Booten automatisch gestartet wurden. Das Problem war, dass Nginx zuerst an den http-Port bindete, was den Start von Apache verhinderte.
Ich hatte ähnliche Symptome und eine andere Lösung: In /etc/Apache2/mods-enabled/php5.conf gab es einen hilfreichen Hinweis in dem Kommentar, dem ich folgte:
# To re-enable php in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it.
Ich verbrachte zwei Tage damit, das zu finden, und stellte fest, dass ich meine PHP -Skripts in das falsche Verzeichnis steckte.
Bei meiner standardmäßigen Ubuntu-Installation habe ich die Skripte in /var/www
gestellt. Sie hätten in /var/www/html
sein sollen.
Ich habe gerade erst mit PHP begonnen, daher weiß ich nicht, ob sich meine Lösung auf die Versionsänderung bezieht, die Sie durchlaufen haben.
dies löste das Problem für mich (ich habe PHP7 installiert):
Sudo apt-get install libapache2-mod-php7.0
Sudo-Dienst Apache2 neu starten
Ok ... Ich weiß, dass es bereits 1.000.000 Antworten auf diese Fragen gibt, - aber ich habe mindestens sechs effektive Stunden damit verbracht, diese herauszufinden; und ich habe es hunderte Male gegoogelt und keinen einzigen Beitrag darüber gefunden. Ich dachte mir, dass ich hier die Lösung für mein Problem hinzufügen würde.
Wenn ich diese beiden Zeilen in meinen .conf-Dateien in der /etc/Apache2/[[SERVER-NAME].conf
- Datei auskommentiert habe:
php_admin_value engine Off
IPCComTimeout 31
Ich habe keine Ahnung, was sie tun oder wie sie dorthin gekommen sind - aber es ist in jeder meiner .conf
- Dateien. Und wenn ich diese Zeilen entferne und sicherstellen würde, dass es einen Symlink im /etc/Apache2/sites-enabled/
- -Ordner gibt, dann lädt sie die index.php nicht herunter - und alles funktioniert so, wie es sollte.
Ich habe VirtualMin auf einem Ubuntu 16.04 VPS installiert. Ich habe ein Upgrade auf PHP Version 7.2 durchgeführt. Kurz danach habe ich die Ubuntu-Version aktualisiert und einen 'Kernel Offset: Disabled'-Fehler gefunden. Also musste ich die neueste Ubuntu-Version löschen - und als mein Betriebssystem wieder hochgefahren ist: BOOM! Ich habe den Fehler erhalten, über den sein Beitrag spricht: Für jede Website in meiner VPS wurde einfach die index.php heruntergeladen, anstatt sie anzuzeigen.
Ich habe alle möglichen Sachen ausprobiert:
a2enmod [MODULE_NAME]
aktivieren. Und ich habe den Modulnamen durch Googeln gefunden. Ich musste etwa 6-8 Module aktivieren, bevor ich diesen Schritt in der Validierung überstanden hatte - und es dauerte ein paar Minuten, bis der Cache leer war. Dies war ein langwieriger Schritt.Wenn keiner der oben genannten funktioniert,
kommentieren Sie die Zeile aus
SetHandler ....
und starten Sie Apache erneut mit
/etc/init.d/httpd restart
Es sollte funktionieren!
Ich habe so ein Problem. So löse ich es ... Nach der Installation von Apache habe ich dann PHP mit diesem Befehl installiert.
Sudo apt-get install php libapache2-mod-php
es wird korrekt ausgeführt, aber ich fordere die .php -Datei von Apache an, ohne das Skript PHP auszuführen.
Dann überprüfe ich, ob PHP aktiviert ist.
$ cd /etc/Apache2
$ ls -l mods-*/*php*
aber es zeigte keine ergebnisse. Ich überprüfe installierte PHP Pakete.
$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
Auf meinem Computer sind verschiedene Versionen von PHP -Versionen installiert. Dann entferne ich einige PHP -Pakete mit apt-get bereinigen aus meiner vorherigen Liste.
Sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
Ich installiere PHP neu.
Sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Stellen Sie sicher, dass das Modul PHP geladen ist
$ a2query -m php7.0
wenn nicht aktiviert mit:
$ Sudo a2enmod php7.0
Starten Sie Apache Server neu
$ Sudo systemctl restart Apache2
Zum Schluss überprüfe ich PHP process auf Apache
erstellen Sie eine leere Datei
Sudo vim /var/www/html/info.php
Fügen Sie diesen Inhalt zu info.php hinzu und speichern Sie.
<?php
phpinfo();
?>
Überprüfen Sie im Browser:
es zeigt sich richtig. Ich denke, das wird jedem helfen.
Ich hatte ein ähnliches Problem mit dem OP, wenn ich php5 von einer älteren Version auf 5.5.9 aufrief. Dies ist die mit Mint 17 installierte Version.
Ich führe ein LAMP-Setup auf einem Computer in meinem lokalen Netzwerk aus, mit dem Änderungen an Websites in der Vorschau angezeigt werden, bevor ich diese Änderungen auf den tatsächlichen Live-Server lade. So pflege ich einen perfekten lokalen Spiegel des tatsächlichen Ortes.
Nach dem Upgrade werden Dateien, die auf der tatsächlichen Site einwandfrei laufen und angezeigt werden, nicht oder nur HTML auf dem lokalen Computer angezeigt. PHP wurde nicht analysiert. Der Befehl phpinfo () hat funktioniert, also wusste ich, dass PHP sonst funktioniert. Das Protokoll hat keine Fehler generiert. Beim Anzeigen der Seitenquelle wurde der tatsächliche PHP-Code angezeigt.
Ich hatte eine test.php-Seite erstellt, die den folgenden Code enthielt:
<?php
phpinfo();
?>
Das hat funktioniert. Dann entdeckte ich, als ich <?php
in <?
änderte, der Befehl funktionierte nicht mehr. Alle meine PHP-Sites verwenden <?
anstelle von <?php
, was vielleicht nicht ideal ist, aber es ist die Realität. Ich habe das Problem behoben, indem ich zu/etc/php5/Apache2 gegangen bin, nach "short_open_tag" gesucht und den Wert von Off in On geändert habe.
Wenn Sie über virtualmin verfügen, können Sie diese Zeilen auskommentierenin Ihrer Apache-Konfiguration in/etc/Apache2/sites-available
#RemoveHandler .php
#RemoveHandler .php7.0
#php_admin_value engine Off
PHP56
vim /etc/httpd/conf/httpd.conf
LoadModule php5_module libexec/Apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Ich hatte dieses Problem und wenn Sie tatsächlich noch nie mit Ihren Serverkonfigurationseinstellungen gespielt haben, liegt Ihr Problem bei 90% in Ihrer Datei .htaccess
Sie ändern entweder .htaccess LOCALLY oder löschen es (LOCALLY).