PHP4 und 5 parallel?

mkr

Registered User
Hallo!

Ich habe auf einem Server mod_php5 installiert, möchte aber für einige wenige Sites vorübergehend noch PHP4 anbieten.

Das Howto habe ich gelesen, und es ist mir soweit klar, dass PHP4 als CGI laufen muss.

In den Anleitungen habe ich gesehen, dass man eine Endung mit dem CGI verknüpfen muss. Muss ich wirklich alle PHP4-Dateien in .php4 umbenennen? Gibt es keine andere Möglichkeit, mit der ich für einen vHost PHP5 deaktivieren und PHP4 aktivieren kann?

Vielen Dank für Eure Hilfe!
 
Einfach den Handler der gewünschten Endung (in deinem Fall wohl .php) zuweisen. mod_php muss dann natürlich deaktiviert werden (`php_flag engine off`).
 
Irgendwie bekomme ich es nicht richtig hin. Jetzt werden die PHP-Files zum Download angeboten und im error_log steht folgende Meldung:

Code:
[Fri Mar 21 12:00:46 2008] [error] [client xy] Premature end of script headers: php4-cgi

In der apache2.conf habe ich folgende Anpassungen vorgenommen:

Code:
ScriptAlias /cgi-php4/ /usr/bin/
<Directory /usr/bin>
        AllowOverride None
        Options +ExecCGI +FollowSymlinks
        Order allow,deny
        Allow from all
</Directory>
Action application/x-httpd-php4 /cgi-php4/php4-cgi

Im vHost:

Code:
php_admin_flag engine off
AddHandler application/x-httpd-php4 .php

Zusätzlich musste ich noch das "Actions"-Modul aktivieren.

Code:
cat datei.php | php4-cgi
funktioniert übrigens ohne Probleme. Den safe_mode habe ich auch deaktiviert.

Was habe ich falsch gemacht?
 
Code:
ScriptAlias /php4-cgi /usr/bin/php4-cgi
Action php4-cgi /php4-cgi
AddHandler php4-cgi .php
Und dann schau noch in dein suexec.log.
 
In der suexec.log steht:

Code:
[2008-03-21 12:07:18]: command not in docroot (/usr/bin/php4-cgi)

Habe gar nicht daran gedacht, dass suexec aktiviert ist. Wenn ich die Option "SuExecUserGroup" auskommentiere, bekomme ich folgende Fehlermeldung:

Code:
Warning: Unexpected character in input: '' (ASCII=1) state=1 in /usr/bin/php4-cgi on line 1836

Die Seite enthält aber nur ein phpinfo(), sonst nichts.
 
Ich konnte den Fehler isolieren: Anscheinend hat das php4-cgi-Paket von Debian einen Fehler, der es veranlasst, sich selbst zu parsen. Deshalb die Fehlermeldung.

Habe nun selbst ein PHP4 kompiliert, jetzt läuft es.

Trotzdem vielen Dank für die Hilfe!
 
Die richtige Lösung wäre es, sich über apt-get die Sourcen zu ziehen, im debian/rules-File die fehlerhafte configure-Option (wahrscheinlich --enable-discard-path) zu deaktiveren und mit dpkg-buildpackage ein Paket zu erstellen.

Weil ich keine Zeit hatte, habe ich mir die Sourcen von php.net heruntergeladen, entpackt, ./configure und make ausgeführt. Danach habe ich einfach die Binary (sapi/cgi/php) nach /usr/bin/php4-cgi kopiert.

Sehr hässlich, aber es läuft... (Und es muss nur temporär laufen, bis ein Kompatibilitätsproblem gefixt ist.)
 
Das ist der gleiche Fehler, den ich auch hatte, bevor ich PHP selbst kompiliert habe. Hast Du irgendwelche configure-Optionen mitgegeben?

Das php4-cgi von Debian funktioniert über die Shell auch, nur nicht über den Apache.
 
Back
Top