it-swarm.com.de

Apache zeigt PHP-Code an, anstatt ausgeführt zu werden

Ich habe vor kurzem versucht, PHP und Apache auf meinem Computer zu installieren. Nach vielen Stunden sind sie installiert. Ich habe die httpd.conf- und php.ini -Dateien geändert, wie jeder sagt. Ich habe dann ein einfaches PHP-Skript erstellt:

<?php phpinfo(); ?>

Wenn ich jedoch versuche, es mit http://127.0.0.1/phpinfo.php auszuführen, wird nur der Quellcode angezeigt, anstatt ihn auszuführen. Ich verwende Apache2, PHP5 und Windows Vista. Ich habe im ganzen Internet ohne Erfolg gesucht und stoße fast mit dem Kopf gegen die Wand. Kann mich jemand vor einer Gehirnerschütterung retten?

EDITED LINES:

PHP.INI:

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5Apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"
81
imulsion

Du musst PHP aktivieren! Überprüfen Sie den Ordner mods-enabled im Apache-Verzeichnis (Standard:/etc/Apache2 /), um zu sehen, ob Sie eine Datei mit dem Namen php finden. Ich erinnere mich nicht an die Erweiterung, aber ich denke es ist .so.

Überprüfen Sie auch var/log/Apache2/error.log, um zu sehen, ob Sie Fehler haben.

74
Daniel Figueroa

Wow, viele Lösungen hier! Folgendes habe ich auf Ubuntu 16.04 gemacht:

Sudo apt-get install php libapache2-mod-php
Sudo a2enmod mpm_prefork && Sudo a2enmod php7.0
Sudo service Apache2 restart
37
helmy

Für PHP 7 (kann auch für frühere Versionen gelten), aber ich musste Folgendes tun:

Fügen Sie dies am Ende von /etc/Apache2/Apache2.conf hinzu 

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Führen Sie dies vom Terminal aus:

Sudo a2dismod mpm_event && Sudo a2enmod mpm_prefork && Sudo a2enmod php7

Vergessen Sie nicht, Apache neu zu starten, damit Sie wissen, dass Sie etwas geändert haben:

Sudo service Apache2 restart

Dies ist eine Zusammenfassung von: https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/

25
RyanNerd

öffne die Datei

/etc/Apache2/httpd.conf

und ändern

#LoadModule php5_module libexec/Apache2/libphp5.so

in

LoadModule php5_module libexec/Apache2/libphp5.so

Also das Kommando PHP einfach in httpd.conf laden

23
inigo333

Ich habe dies gefunden, um mein verwandtes Problem zu lösen. Ich habe es dem entsprechenden <Directory>-Abschnitt hinzugefügt:

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>
5
Pawel

Eine andere Antwort, die für mich funktioniert hat. Ist das, [Sudo] apt-get install libapache2-mod-php5.X zu installieren 

5
Simon Mohoalali

Okay, wenn Sie das, was Sie oben oder früher gesagt haben, versucht haben (was mögliche Gründe sind) und der Code immer noch angezeigt wird, anstatt ihn auszuführen, gibt es eine Sache, die Sie falsch machen, die nicht angesprochen wurde. Die URL, die Sie für den Zugriff auf Ihren PHP-Code verwendet haben; Einige Leute versuchen, ihren PHP-Code auszuführen, indem sie die .php-Datei einfach in den Webbrowser ziehen. Dies ist eine falsche Praxis und kann zu diesem Problem führen. Wenn Sie eine Datei als "test.php" im Ordner "C: // wamp/www" gespeichert haben, müssen Sie auf diese Datei folgendermaßen zugreifen: localhost: //test.php.diese Art von Fehler tritt auf, wenn Sie auf folgende Weise darauf zugreifen: localhost: //wamp/www/test.php

Ich hoffe, ich habe jemandem da draußen geholfen. o / ~ Daniel

3
DAniel

Wenn ich poste, was für mich funktioniert hat, hilft jemandem die Straße hinunter, auch wenn dies ein ungewöhnlicher Fall ist.

Ich hatte einen Handler eingerichtet, um meinen Webhost zu zwingen, eine höhere Version von PHP als seine Standardversion zu verwenden. Es war 5,1, aber ich wollte 5,6, also hatte ich folgendes:

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

in meiner .htaccess-Datei.

Beim Versuch, meine Site lokal auszuführen, hat der PHP-Code dazu geführt, dass er an den Browser ausgegeben wurde. Durch das Entfernen wurde das Problem behoben.

3
evanmcd

Sie könnten Ihre .htaceess -Datei löschen und das System eine neue (leere oder grundlegende) Datei erstellen lassen. Es kann sein, dass einige Zeilen, die Sie hinzugefügt haben, falsche Anweisungen sind, oder dass etwas anderes das Problem verursacht. Sie können dann Zeile für Zeile aus Ihrer alten .htaccess -Datei hinzufügen, um zu sehen, was das Problem verursacht hat.

Das hat bei mir funktioniert. Die Zeilen mit dem Hinweis, PHP-Erweiterungen nicht anzuzeigen, waren in meinem Fall ein Problem ( RewriteCond und RewriteRule ). Meine alte .htaccess -Datei funktionierte auf einem gemeinsam genutzten Server einwandfrei. Dieses Problem trat jedoch auf, als ich zu VPS wechselte.

2
bokistack

keines der oben genannten Punkte hat für mich funktioniert oder funktioniert ... PHP7, Apache Httpd 2.2 auf CentOS 6

tatsache ist, ich habe PHP (alle mit yum) vor Apache installiert ... Sie müssen das Gegenteil tun: Installieren Sie immer zuerst Apache, dann PHP und dann funktioniert es ....__ In der Tat fehlen Ihnen libphp7.so und libphp7-zts.so/etc/httpd/modules/

Ich konnte mich sowieso ohne PHP deinstallieren. Ich habe die magische Linie in /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php Hinzugefügt und dann ausgeführt: yum install php php-mysql

1
berhauz

Was für mich funktioniert hat:

Suchen Sie in der aktiven httpd.conf

<IfModule mime_module>
...
</IfModule>

Es fehlte folgendes

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

Nach dem Neustart von Apache werden .php-Dateien korrekt analysiert.

1
paul

wenn das Modul userdir aktiviert ist und sich Ihre Site in einem Userdir (~/public_html) befindet, müssen Sie /etc/Apache2/mods-enabled/php5.conf..__ überprüfen. Der folgende Teil macht es (auf Ubuntu 14.10 utopic):

# Running PHP scripts in user directories is disabled by default
# 
# 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.

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>
1
user906489

Vielen Dank an alle anderen in diesem Thread für ihre Vorschläge. Ich habe festgestellt, dass der Apache-Server nicht in der Lage war, einen Syntaxfehler in einer load-Datei in /etc/Apache2/mods-enabled zu melden. Es stellte sich heraus, dass sowohl php7.0 als auch php7.1 aktiviert waren.

a2dismod php7.0
systemctl restart Apache2

und PHP wird wieder korrekt gerendert.

1
djnz0feh

Wenn Sie ein Ubuntu-Benutzer sind, muss Apache nach der Installation den folgenden Befehl in der Neuinstallation ausführen

Sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

In meinem Fall funktioniert das gut.

1
Hasan Baig
0
mechanic

Debian 9-Lösung:

touch /etc/Apache2/conf-available/php.conf 

In die nächsten Zeilen einfügen:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

Dann renne:

a2enconf php && service Apache2 restart
0
mrDinkelman

Ich hatte das gleiche Problem, verursacht durch die Debian/Ubuntu-Standardkonfiguration des Moduls suphp. Es enthielt suPHP_Engine off für ganze/usr/share, was dazu führte, dass die PHP-Quellen im Browser angezeigt wurden. Die Deaktivierung mit a2dismod suphp war die Übergangslösung.

0
Torsten Knodt

Apache zeigt PHP-Code anstatt das Problem zu lösen

1. Geöffnet php5.6 conf oder php7.x conf

# folgender Befehl:

$ Sudo vi /etc/Apache2/mods-enabled/php5.6.conf

2. Folgende Zeilen kommentiert

enter image description here

3. Starten Sie den Server neu

$ Sudo-Dienst Apache2 Neustart

4 Viel Spaß :)

0
Matthew Farrell

Wenn Sie PHP-Versionskonflikte haben, geschieht dies manchmal Um dies zu vermeiden, befolgen Sie bitte die folgenden Schritte 

Schritt 1: Liste Yum installiert | grep 'php'

wenn Sie mehrere Versionen von PHP wie PHP 5.6 und PHP 7.0 haben, wird dieses Problem auftreten 

Schritt 2: Entfernen Sie ** Ihre PHP-Version **

Schritt 3: Starten Sie anschließend den apapche /etc/init.d/httpd restart oder service Apache2 restart neu.

0
sachin_ur

Dies geschah mir auch, wenn $ _POST in MAMP ausgeführt wurde. Alle meine .ini- und httpd-Dateien wurden ordnungsgemäß eingerichtet. Wenn Sie eine Formularverarbeitung ausführen und ein HTML-Dokument haben und die Informationen in einem PHP-Formularhandler mit $ POST veröffentlichen, stellen Sie sicher, dass Sie die HTML-Datei von localhost über Ihren Server und nicht nur lokal ausführen. 

Dies war eine Verknüpfung, die ich zum Ausführen von HTML-Dokumenten ausgeführt habe. Klicken Sie einfach auf die HTML-Datei in meinem Verzeichnis und starten Sie sie in meinem Webbrowser. Wenn Sie tatsächlich prüfen, ob PHP in Ihrem Formular verarbeitet wird, müssen Sie Ihre HTML-Datei über Ihre Server ausführen. Ein sehr einfaches Protokoll, das ich übersehen habe.

Beispiel:

Falsch: file:///Applications/MAMP/htdocs/form/form.html

Rechts: http://localhost:your port number/form/form.html

Jetzt sollte die PHP-Datei verarbeitet werden, sobald Sie auf die Schaltfläche "Senden" klicken

0
maidenastraea

Führen Sie Xampp (Apache) als Administrator aus. In Google Chrome-Typ: 

localhost/<insert folder name here>/<insert file name>

wenn der von Ihnen erstellte Ordner "LearnPhp" ist, lautet die Datei "chapter1.php" und geben Sie dann ein 

localhost/LearnPhp/chapter1.php

Ich habe diesen Ordner im Ordner xampp im Ordner htdocs erstellt, der beim Herunterladen von xampp erstellt wird. 

0
Aquasar