Betriebssystem- und Serverinformationen:
- CentOS 6.4 (endgültig)
- Apache 2.2.15
- PHP 5.5.1
Ich hatte zuvor PHP 5.3.x installiert, entschied mich aber für ein Upgrade. Ich habe zuerst PHP 5.3.x deinstalliert und dann PHP 5.5.1 installiert, aber nach Abschluss der Installation hat Apache die PHP-Dateien nicht analysiert, sondern sie nur heruntergeladen. Ich habe ähnliche Fragen hier im Stackoverflow geprüft, aber keine davon hat mir bisher geholfen.
Für die Aufzeichnung 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. Danke dir.
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 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 an, aber nicht alles ist nur ein Teil davon. Ich fügte hinzu
AddType text/html .php
aber kein Glück.
httpd.conf
ob das PHP-Modul kommentiert ist oder nichtAntworten:
Der richtige AddType für PHP ist application / x-httpd-php
Stellen Sie außerdem sicher, dass Ihr PHP-Modul geladen ist
Wenn Sie Apache konfigurieren, versuchen Sie, die Seite in einem anderen Browser anzuzeigen. Ich hatte Tage, an denen Chrome das Ergebnis hartnäckig zwischenspeichert und den Quellcode weiterhin herunterlädt, während es in einem anderen Browser in Ordnung ist.
quelle
/etc/httpd/conf/httpd.conf
Ich bin heute auf dieses Problem gestoßen, und keine der beschriebenen Lösungen hat bei mir funktioniert. Also hier ist eine andere mögliche Ursache:
Wenn Sie so etwas haben
In einer
.htaccess
Datei Ihres Webinhaltsordners kann dies dazu führen, dass Ihre PHP-Skripte nicht mehr funktionieren. In meinem Fall kannte der Server denx-mapp-php6
Typ nicht, da.htaccess
ich diese Datei von einem anderen Webhost importiert habe, als ich den Inhalt der Website übertragen habe.Nur das Entfernen der
AddHandler
Zeile aus der.htaccess
Datei löste es für mich.quelle
AddHandler application/x-httpd-php54 .php54 .php
musste das entfernt werden.Nachdem ich viel gekämpft hatte, löste ich endlich das Problem.
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 immer noch diesen Fehler erhalten.Das ist es.
Aber wenn Sie immer noch den Fehler bekommen:
dann mache folgendes:
Es stellte sich heraus, dass Dateien nicht in
mods-enabled
, sondern in gespeichert werden solltenmods-available
. Ein Symlink sollte dann in Mods-fähig erstellt werden und auf die in Mods-Available gespeicherte Datei verweisen.Entfernen Sie zuerst das Original:
Erstellen Sie dann den symbolischen Link:
Ich hoffe dein Problem ist gelöst.
quelle
Bitte werfen Sie einen Blick auf Ihre addtype-Direktiven.
Es sieht für mich so aus, als würde Apache dem Browser mitteilen, dass er eine Dokumentanwendung / PHP für Skripte mit Erweiterungen wie .php5 sendet. Tatsächlich soll Apache dem Browser mitteilen, dass das Skript Text / HTML ausgibt.
Bitte versuchen Sie dies:
In Bezug auf den obigen Vorschlag, dass Sie dem Browser mitteilen sollten, dass Sie ein PHP-Skript ausgeben: Es schien mir eine ungewöhnliche Idee zu sein. Ich habe es gegoogelt und festgestellt, dass es im Web ziemlich viele Diskussionen darüber gibt. Anscheinend 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 diesen bestimmten Mime einfach nicht erkennt Art.
Das Löschen des Browser-Cache ist immer eine gute Idee.
Falls es hilfreich ist, finden Sie hier eine Kopie meiner Datei /etc/httpd/conf.d/php.conf von einem Server mit CentOS 5.9:
quelle
Dies kann aufgrund der fehlenden Module geschehen, die für Ihre PHP erforderlich sind. Angenommen, Sie haben PHP7 installiert, suchen Sie nach verfügbaren PHP7-Modulen mit
Der obige Befehl listet alle verfügbaren PHP7-Module für die Installation auf. Sie können mit der Installation von Modulen wie:
quelle
Wenn Ihr .htaccess so etwas hat ... AddHandler-Anwendung / x-httpd-php53 .php .php5 .php4 .php3, dann kommentieren Sie es und versuchen Sie erneut, dies zu aktualisieren.
quelle
Ich habe das gleiche Problem. Apache lädt keine PHP-Dateien von einer bestimmten Website, sondern lädt sie einfach herunter. Ich habe diesen Beitrag und die Antworten gelesen und gesehen, dass ich diese Zeile an der letzten Stelle der .htaccess-Datei habe:
Ich habe es kommentiert und alles funktioniert gut.
Dank an alle !!!
quelle
Ich habe zuvor ein ähnliches Problem, nachdem ich von 5.3 auf 5.4 aktualisiert habe. Aber mein Setup sieht ein bisschen anders aus, da ich Debian verwende und fcgid verwende, um die PHP-Seiten zu bedienen, und nicht das PHP5-Apache / CGI-Modul. Nach dem Upgrade wurde auch php5_cgi installiert, das mit meinem fcgid-Setup kollidierte und keine PHP-Dateien mehr ausführte.
Ich musste das Apache-Modul deaktivieren und Apache neu starten
Sobald das Modul php5_cgi nicht mehr im Weg war, konnte fcgid wieder PHP-Seiten bereitstellen.
quelle
Ich hatte ähnliche Symptome, noch eine andere Lösung: In /etc/apache2/mods-enabled/php5.conf gab es einen hilfreichen Rat in dem Kommentar, dem ich folgte:
quelle
Für den Fall, dass jemand PHP7 in einer Linux-Umgebung verwendet
Stellen Sie sicher, dass Sie PHP7 aktivieren
Starten Sie den MySQL-Dienst und Apache neu
quelle
Nach der Aktualisierung von PHP auf 7.3 wurden PHP-Skripte mit www-Daten anstelle von $ USER wie zuvor ausgeführt.
Ich musste PHP-FPM neu installieren und aktivieren:
Um sicherzustellen, dass für Virtualmin alles in Ordnung ist , habe ich den Assistenten zum erneuten Überprüfen der Konfiguration
/virtual-server/check.cgi
unter Vitualmin / Systemeinstellungen verwendet .Danach lud Apache / PHP PHP-Dateien herunter, anstatt sie auszuführen. Also musste ich bearbeiten,
/etc/apache2/mods-available/php7.3.conf
um die ZeileSetHandler application/x-httpd-php
wie folgt zu kommentieren :Nach dem Neustart von Apache hat es mein Problem gelöst, hoffe diese Hilfe.
Kümmere dich auch um den Browser-Cache.
Mein System:
quelle
Ich habe zwei Tage damit verbracht, dies zu verfolgen und festgestellt, dass ich meine PHP-Skripte in das falsche Verzeichnis gestellt habe.
Bei meiner Standard-Ubuntu-Installation habe ich die Skripte eingefügt
/var/www
. Sie hätten drin sein sollen/var/www/html
.Ich habe gerade mit der PHP-Arbeit begonnen, daher weiß ich nicht, ob sich meine Lösung auf die Versionsänderung bezieht, die Sie durchlaufen haben.
quelle
Dies löste das Problem für mich (ich habe PHP7 installiert):
sudo apt-get install libapache2-mod-php7.0
sudo service apache2 neu starten
quelle
Ich hatte dieses Problem. Es stellte sich heraus, dass ich sowohl Nginx als auch Apache installiert hatte und automatisch beim Booten startete. Das Problem war, dass Nginx zuerst an den http-Port gebunden wurde, wodurch der Start von Apache verhindert wurde.
quelle
Es ist auch möglich, dass Sie Nginx laufen lassen, aber Ihr PHP ist so eingerichtet, dass es mit Apache läuft. Um zu überprüfen, ausführen
service nginx status
undservice apache2 status
zu sehen, welche ausgeführt wird. Für den Fall, dass nginx ausgeführt wird und Apache nicht, führen Sie es einfach aussudo service nginx stop; sudo service apache2 start
und Ihr Server stellt nun wie erwartet PHP-Dateien bereit.quelle
Ok ... Ich weiß, dass es bereits 1.000.000 Antworten auf diese Fragen gibt, aber ich habe mindestens 6 effektive Stunden damit verbracht, diese herauszufinden. und ich habe es hunderte Male gegoogelt und keinen einzigen Beitrag darüber gefunden. Also dachte ich mir, dass ich hier die Lösung für mein Problem hinzufügen würde.
Die Schlussfolgerung
Wenn ich diese beiden Zeilen in meinen .conf-Dateien in der
/etc/apache2/[[SERVER-NAME].conf
-file auskommentiert habe:Ich habe keine Ahnung, was sie tun oder wie sie dorthin gekommen sind - aber es steht in jeder meiner
.conf
Dateien. Und wenn ich diese Zeilen entferne und sicherstelle, dass sich ein Symlink im/etc/apache2/sites-enabled/
Ordner befindet, wird die Datei index.php nicht heruntergeladen - und alles funktioniert wie es sollte.Die ganze Geschichte
Ich habe VirtualMin auf einem Ubuntu 16.04 VPS installiert. Ich habe auf PHP Version 7.2 aktualisiert. Kurz danach habe ich die Ubuntu-Version aktualisiert und einen 'Kernel Offset: Disabled'-Fehler festgestellt. Also musste ich die neueste Ubuntu-Version löschen - und als mein Betriebssystem wieder hochfuhr: BOOM! Ich habe den Fehler erhalten, über den sein Beitrag spricht: Für jede Site auf meinem VPS wurde einfach die index.php heruntergeladen, anstatt sie anzuzeigen.
Ich habe alle möglichen Sachen ausprobiert:
a2enmod [MODULE_NAME]
. Und ich habe den Modulnamen durch Googeln gefunden. Ich musste ungefähr 6-8 Module aktivieren, bevor ich diesen Schritt in der Validierung hinter mir hatte - und es dauerte ein paar Minuten, bis der Cache leer war -, also war dies ein mühsamer Schritt.quelle
Ich hatte ein ähnliches Problem wie das OP beim Upgrade von PHP5 von einer älteren Version auf 5.5.9, die mit Mint 17 installierte Version.
Ich führe ein LAMP-Setup auf einem Computer in meinem lokalen Netzwerk aus, mit dem ich Änderungen an Websites in der Vorschau ansehe, bevor ich diese Änderungen auf den tatsächlichen Live-Server hochlade. So pflege ich einen perfekten lokalen Spiegel der tatsächlichen Site.
Nach dem Upgrade werden Dateien, die auf der tatsächlichen Site perfekt ausgeführt und angezeigt werden, nicht oder nur HTML auf dem lokalen Computer angezeigt. PHP wurde nicht analysiert. Der Befehl phpinfo () hat funktioniert, daher wusste ich, dass php ansonsten funktioniert. Das Protokoll hat keine Fehler generiert. Das Anzeigen der Seitenquelle zeigte mir den tatsächlichen PHP-Code.
Ich hatte eine test.php-Seite erstellt, die den folgenden Code enthielt:
<?php phpinfo(); ?>
Das hat funktioniert. Dann stellte ich fest, dass der Wechsel
<?php
zum<?
Befehl nicht mehr funktionierte. Alle meine PHP-Sites verwenden,<?
anstatt<?php
vielleicht nicht ideal, 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 Aus in Ein geändert habe.quelle
Wenn keines der oben genannten Verfahren funktioniert,
versuche die Zeile auskommentieren
und starten Sie Apache mit neu
Es sollte funktionieren!
quelle
PHP56
vim /etc/httpd/conf/httpd.conf
quelle
Ich habe so ein Problem. So löse ich es. Nach der Installation von Apache habe ich PHP mit diesem Befehl installiert .
es wird korrekt ausgeführt, aber ich fordere eine PHP- Datei von Apache an, die es gibt, ohne das PHP auszuführen Skript .
Dann überprüfe ich, ob PHP aktiviert ist.
aber es zeigte keine Ergebnisse. Ich überprüfe installierte PHP-Pakete.
Verschiedene Arten von PHP- Versionen, die auf meinem Computer installiert sind. Dann entferne ich einige PHP- Pakete mit apt-get purge aus meiner vorherigen Liste .
Ich installiere PHP neu
Stellen Sie sicher, dass das PHP-Modul geladen ist
wenn nicht aktiviert mit:
Starten Sie den Apache- Server neu
Schließlich überprüfe ich den PHP- Prozess auf Apache
Erstellen Sie eine leere Datei
Fügen Sie diesen Inhalt zu info.php hinzu und speichern Sie ihn.
Überprüfen Sie im Browser:
Ich denke, das wird jedem helfen.
quelle
Ich hatte dieses Problem und wenn Sie tatsächlich nie mit Ihren Serverkonfigurationseinstellungen gespielt haben, liegt Ihr Problem zu 90% in Ihrem .htaccess Datei
Sie können die .htaccess- Datei entweder LOKAL ändern oder löschen (LOKAL)
quelle
Wenn Sie über virtualmin verfügen, versuchen Sie, diese Zeilen in Ihrer Apache-Konfiguration in / etc / apache2 / sites-available auskommentieren
quelle
Als ich ein Upgrade von PHP 7.2 auf PHP 7.4 durchführte, bekam ich auch das gleiche Problem. Arbeitete wie folgt: -
In
[domain].conf file
, kommentiert folgendes:php_admin_value engine Aus
Und hinzugefügt:
Deaktiviere Mod 7.2 und aktiviere 7.4 wie folgt:
a2dismod php7.2
a2enmod php7.4
/etc/apache2/mods-enabled/php7.4.conf
Kommentar in der Datei wie folgt:SetHandler-Anwendung / x-httpd-php
php_admin_flag engine Off
quelle
Für Leute, die diesen Beitrag von Google in fast 6 Jahren (und darüber hinaus!) Gefunden haben, kann dieses Problem mit Apache 2 und PHP 7 auftreten, während Sie auch das verwenden
UserDir
Modul verwenden.Eine andere mögliche Ursache für dieses Problem könnte sein, dass Sie versuchen, das Skript in einem "Benutzerverzeichnis" vom
UserDir
Modul aus auszuführen . Das Ausführen von PHP-Skripten in Benutzerverzeichnissen ist standardmäßig deaktiviert. Dieses Problem tritt auf, wenn sich das Skript impublic_html
Verzeichnis Ihres Basisordners befindet und Sie versuchen, von dort aus darauf zuzugreifenhttp://localhost/~your_username
.Um dies zu beheben, öffnen Sie
/etc/apache2/mods-enabled/php7.2.conf
. Sie müssen den Tag-Block unten, der lautet, kommentieren oder löschenquelle
Wenn Ihr .htaccess so etwas hat
quelle