Ich betreibe einen Ubuntu-Server auf einer VM, um verschiedene Webforum-Lösungen zu testen. Ich habe ein ~/public_html/ eingerichtet, das mit dem Apache2-Webserver zugänglich ist, und das funktioniert gut.
Wenn ich jedoch in einem Browser auf eine PHP-Datei zugreife (mit der IP-Adresse/~Benutzername/phpfile.php meiner VM), wird sie nicht wie vorgesehen angezeigt. Stattdessen wird angeboten, sie in einer Datei zu speichern bzw. gefragt, mit welchem Programm sie geöffnet werden soll. Interessanterweise erkennt dieses Dialogfeld jedoch, dass es sich um eine PHP-Datei handelt.
Ich habe die folgende PHP-Version auf dem System installiert:
PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Und folgender Server:
Server version: Apache/2.2.14 (Ubuntu)
Server built: Nov 18 2010 21:19:09
Wenn irgendjemand die Ursache hierfür kennt/mögliche Lösungen kennt, würde mich das sehr freuen :)
BEARBEITEN: Es stellte sich heraus, dass dieses Verhalten nur bei Dateien im Verzeichnis ~/public_html/ auftrat. Alle PHP-Dateien in /var/www/ funktionieren einwandfrei.
Die Preise gehen an denjenigen, der erklären kann, warum? :D (Und mit Preisen meine ich nur ein „Gut gemacht“, keine wirklichen Preise, fürchte ich.)
Antwort1
Möglicherweise haben Sie derzeit nur die CLI-Version von PHP installiert. Versuchen Sie
sudo apt-get install php5
und starten Sie Apache neu
sudo apache2ctl restart
.
Sie können auch überprüfen, ob das PHP-Modul in Apache geladen ist, indem Sie Folgendes tun:
sudo apache2ctl -M
Wenn das Modul geladen ist, sollte es etwa Folgendes anzeigen:
Loaded Modules:
...
php5_module (shared)
...
Syntax OK
Antwort2
Fügen Sie dies zu Ihrer Apache-Konfiguration hinzu
AddType application/x-httpd-php .php
Antwort3
Sie müssen Apache so konfigurieren, dass es den PHP-Interpreter startet, wenn eine PHP-Datei angefordert wird, anstatt nur den Inhalt der Datei zurückzugeben.
Dies muss in httpd.conf für das betreffende Verzeichnis erfolgen. Es würde ungefähr so aussehen:
# Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script php
# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php
AddType text/html php