ubuntuusers.de

PHP-Code wird ignoriert auf lokalem Server

Status: Gelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Hallo,

nach längerer Zeit hänge ich tatsächlich mal wieder an einem Problem. Hintergrund: Ich möchte meine Webseite neu einrichten und dafür lokal testen. Hierfür habe ich mir gemäß LAMP-Artikel alles installiert, was ich vermutlich brauche.

Mein Problem ist nun folgendes Minimalbeispiel, gespeichert unter ~/public_html/myfile.php:

1
2
3
4
5
6
7
<html><head><title>Test</title></head><body>
Hello
<?php
print "World";
?>
!
</body></html>

führt zu folgender Ausgabe, wenn ich Browser http://localhost/~dee/myfile.php aufrufe:

Hello !

Ich habe schon einige Probleme mit PHP und Apache gefunden, aber die bezogen sich entweder drauf, dass die PHP herunterladen wird oder der Quelltext des PHP angezeigt wird. In meinem Fall wird der PHP-Block einfach ignoriert. Das Minimalbeispiel zeigt auch eine leere Seite.

Auf der Konsole wird es korrekt ersetzt:

$ php ~/public_html/myfile.php
<html><head><title>Test</title></head><body>
Hello
World!
</body></html>
Code

Ein paar Infos:

$ php -version
PHP 7.2.24-0ubuntu0.18.04.6 (cli) (built: May 26 2020 13:09:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.6, Copyright (c) 1999-2018, by Zend Technologies
$ apache2 -version
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-08-12T21:33:25
$ a2query -m php7.2
php7.2 (enabled by maintainer script)

Hinweis: Ich hab meine Webseite http://www.deesaster.org/ damals (ca. 2007) ebenfalls mit einem lokalen LAMP-Server initial geschrieben und getestet. Damals ging das noch. Und ebenso funktioniert das PHP auf Webserver, wo meine Webseite gerade liegt. Ich überlege, ob sich die Installation von PHP5 lohnt, weil das vermutlich damals und auf dem Webserver auch zum Einsatz kam/kommt.

Gruß Dee

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Dee schrieb:

Hierfür habe ich mir gemäß LAMP-Artikel alles installiert, was ich vermutlich brauche.

Hast du den Server auch für PHP konfiguriert (PHP (Abschnitt „Apache“) und Apache/Module (Abschnitt „PHP-Datei-wird-nicht-ausgefuehrt“)) - also nicht nur das Modul installiert, sondern es auch mit a2enmod aktiviert?

Mein Problem ist nun folgendes Minimalbeispiel, gespeichert unter ~/public_html/myfile.php:

Sind die Rechte für die Datei so gesetzt, dass sie vom Webserver ausgeführt werden kann?

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Hi seahawk,

also nicht nur das Modul installiert, sondern es auch mit a2enmod aktiviert?

Sollte a2query nicht genau das zeigen? Ansonsten ja, Module habe ich mit

$ sudo a2enmod php7.2
Considering dependency mpm_prefork for php7.2:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php7.2:
Module php7.2 already enabled
$ sudo service apache2 restart

aktiviert.

Sind die Rechte für die Datei so gesetzt, dass sie vom Webserver ausgeführt werden kann?

Alle Dateien sind mit Rechten 664 versehen, Verzeichnisse auf 755, und auf dee:www-data gestellt:

$ ll myfile.php 
-rw-rw-r-- 1 dee www-data 92 Sep 13 19:23 myfile.php

Die Zeile "Considering conflict php5 for php7.2:" kommt mir eben etwas komisch vor, weswegen ich auch nach PHP5 fragte.

Gruß Dee

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Dee schrieb:

führt zu folgender Ausgabe, wenn ich Browser http://localhost/~dee/myfile.php aufrufe:

Hello !

Steht das auch so im Quelltext (im Browser) so?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Dee schrieb:

Die Zeile "Considering conflict php5 for php7.2:" kommt mir eben etwas komisch vor, weswegen ich auch nach PHP5 fragte.

Hast du ein Upgrade auf Ubuntu 18.04 von einer früheren Version gemacht, bei der du PHP5 genutzt hattest oder war das eine Neuinstallation? Wie sehen die Symlinks für die aktivierten Module in /etc/apache2/mods-enabled/ aus?

ls -l /etc/apache2/mods-enabled/ 

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

@sebix:

Steht das auch so im Quelltext (im Browser) so?

Nein, im Quelltext des Browsers wird mir das Original angezeigt:

<html><head><title>Test</title></head><body>
Hello
<?php
print "World";
?>
!
</body></html>

Und stimmt, bei meinen Webseiten auf dem Webserver seh ich als Quelltext einer Seite (z.B. http://www.deesaster.org/kcp.php) den PHP-ersetzten Code (in meinem Fall durch include/require).

@seahawk:

Hast du ein Upgrade auf Ubuntu 18.04 von einer früheren Version gemacht, bei der du PHP5 genutzt hattest oder war das eine Neuinstallation?

Normalerweise installiere ich immer neu. Da die meisten Verzeichnisse von September 2018 sind, würde ich vermuten, dass ich damals auch neu installiert habe.

Wie sehen die Symlinks für die aktivierten Module in /etc/apache2/mods-enabled/ aus?

Nur als Auszug, weil es sonst zu viel wird. Ist aber überall gleich:

$ ls -l /etc/apache2/mods-enabled/ | egrep "php|userdir"
lrwxrwxrwx 1 root root 29 Sep 12 09:53 php7.2.conf -> ../mods-available/php7.2.conf
lrwxrwxrwx 1 root root 29 Sep 12 09:53 php7.2.load -> ../mods-available/php7.2.load
lrwxrwxrwx 1 root root 30 Sep 12 09:56 userdir.conf -> ../mods-available/userdir.conf
lrwxrwxrwx 1 root root 30 Sep 12 09:56 userdir.load -> ../mods-available/userdir.load

Gruß Dee

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Wie sieht denn deine /etc/apache2/mods-available/php7.2.conf aus? Ist da eventuell für das userdir die Ausführung von PHP abgeschaltet (vgl. z.B. https://wiki.ubuntu.com/UserDirectoryPHP oder https://stackoverflow.com/a/50900123)?

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Wie sieht denn deine /etc/apache2/mods-available/php7.2.conf aus?

$ cat /etc/apache2/mods-available/php7.2.conf
<FilesMatch ".+\.ph(ar|p|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
    Require all denied
</FilesMatch>

# 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>

Ich hatte den Teil auch schon auskommentiert und Apache neu gestartet. Aber das hat leider nichts geändert.

Gruß Dee

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Hat wirklich niemand mehr eine Idee? Ich bin doch sicher nicht der erste und einzige mit diesem Problem?

Gruß Dee

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Ich habe das gerade mal in einer Ubuntu Server 18.04 VM ausprobiert und hatte da keine Probleme:

$ sudo apt install apache2 libapache2-mod-php
$ sudo a2enmod php7.2 userdir
Considering dependency mpm_prefork for php7.2:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php7.2:
Module php7.2 already enabled
Enabling module userdir.
To activate the new configuration, you need to run:
  systemctl restart apache2
$ mkdir -p ~/public_html
$ vim ~/public_html/test.php  # Datei mit Inhalt füllen und speichern 

Jetzt noch in der /etc/apache/mods-enabled/php7.2.conf den Block

    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>

auskommentieren und den Apache neu starten:

$ sudo systemctl restart apache2 

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Kannst du mir den Inhalt Deiner PHP-Datei test.php schicken? Dann probier ich es damit aus.

Ne VM kann ich auch mal testen.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Dee schrieb:

Kannst du mir den Inhalt Deiner PHP-Datei test.php schicken?

Die habe ich aus deinem ersten Post kopiert.

Dee Team-Icon

(Themenstarter)
Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Zum verrückt werden ...

Ich hab mir jetzt Virtualbox installiert, darin dann Xubuntu 18.04, alles eingerichtet. Und es funktioniert. Dann wieder lokal bei mir getestet ... und es funktioniert auch.

Ich habe seit dem 14.09. nichts mehr geändert, außer den Rechner jeden Tag neu gestartet. Keine Ahnung, ob es am Ende daran lag, aber das Problem ist behoben. Ich weiß nur leider nicht, wieso ...

Danke an seahawk fürs Helfen!

Gruß Dee

Antworten |