PHP 4 und PHP 5 gleichzeitig laufen lassen?

tibo

Registered User
Hallo,

ich würde gerne auf meinem kleinen Testserver (SuSE 9.0, Apache 2) PHP 4 und PHP 5 laufen lassen. Ich stelle es mir vor wie bei einem namhaften großen Provider (der mit den zwei Zahlen ;).

Weiß vielleicht jemand wie ich des realisieren könnte?

Danke für eure Hilfe!


tibo
 
In dem Du das eine PHP als Modul laufen läßt, und das andere als CGI. (Beides als Modul geht nicht, da die sich in die Quere kommen.)
Zusätzlich mußt Du beachten, daß Du eins von beiden selber kompilieren mußt, damit es auf eine andere php.ini zugreift, als die andere Version.

Danach mußt Du im Apache lediglich sie Script-Handler für (z.B.) .php5 auf die CGI-Version von PHP5 setzen und schon gehts.

huschi.
 
*Thread ausgrab weil keinen neuen aufmachen will*

Ok, PHP5 habe ich nun als CGI neben PHP4(module) "laufen".
Anführungszeichen^^ nur deshalb, da ich PHP5 erfolgreich compilen konnte, jedoch hab ich es immernoch nicht auf die Reihe gekriegt PHP5 so richtig als CGI zu includen in den lieben Apachen.
Ist alles korrekt kompiliert (force cgi usw...). Ich hab mal bissle gegoogelt aber hab's irgendwie nicht zum Laufen gebracht. Bringt mir immer 403!
Vielleicht könnte mir ja schnell einer posten, was ich da jetzt genau <VirtualHost>reinmachen muss.
Würde mich über helfende ppl freuen!
 
Keiner eine Idee?
:(
Wär echt cool, wenn sich jemand mal melden würde!
 
Lasst mich doch nicht immer hängen :(
Wenn sich jetzt einer fragt, wie ich zu >550 Posts gekommen bin.... :D
 
Also, ich kann hier nur 'mal posten, was PD-Admin für Einträge erstellt. Da läuft php ja auch als CGI. Vielleicht nützen Dir diese Zeilen etwas (manche Pfade geändert):

PHP:
<VirtualHost xxx.xx.xxx.xxx:80>
ServerName  www.meinedomain.de
DocumentRoot /home/deruser/meinedomain
ServerAlias meinedomain.de
SetEnv RLIMIT_CPU 12
SetEnv RLIMIT_NPROC 20
ScriptAlias /cgi-sys/ /usr/local/pd-admin/cgi-sys/
AddHandler phpwrap .php .php3 .php4
Action phpwrap /cgi-sys/php-cgiwrap/home/deruser/meinedomain/
AddHandler cgiwrap .pl .cgi
Action cgiwrap /cgi-sys/cgiwrap/home/deruser/meinedomain/
</VirtualHost>
Und ausserdem sollt Du hier ja nicht immer alleine posten :p
 
Danke miko93, dass hier zumindest mal einer reinpostet. Konntest zwar nicht direkt damit helfen, aber es hat mir beim Denken weiterhelfen können.
Und tatsächlich: es hat geklappt!
PHP5 und PHP4 laufen nun beide!
Kann ich später auch mal gerne in die FAQs schreiben, da dass glaub ich nicht jeder hier mit links kann, oder war ich der Einzige?

Anyways, es bahnt sich schon das nächste Problem an:
Wie kann ich hier bei der CGI-Version denn per vhost-entry etwas per php_admin_value ändern? Scheint irgendwie nicht zu gehen.
Ich muss unbedingt die openbasedir einschränken, da gerade das Browsen über den gesamten Server möglich ist, was ich persönlich nicht gerade sehr schön finde, wenn jeder User des anderen Users Daten Lesen kann!
Oder stelle ich mich zu blöd an? Bei 1&1 ist die openbasedir ja auch nicht gesetzt und man hat trotzdem keinen Zugriff auf die Daten anderer.
Aber über eine vhost-Lösung wäre ich echt dankbar!
Falls ihr die phpinfo() braucht:
http://xxx/info.php5
Oder soll's doch noch mehr sein? Gerne, hier kommt noch der entspr. Vhost-Eintrag:
<VirtualHost 217.160.78.223:80>
DocumentRoot /home/www/web1/html/8428
ServerAlias xxx.de www.xxx.de
ScriptAlias /php5/ /usr/local/php5/bin/
Action php5-cgi /php5/php
AddHandler php5-cgi .php5
php_admin_value open_basedir /home/www/web1/html/8428/:/data/files/8428/:/home/www/web1/ad/
php_admin_value upload_tmp_dir /data/files/8428
php_admin_value auto_append_file /home/www/web1/ad/ad.php
php_admin_value memory_limit 5M
</VirtualHost>
Die php_admin_value Einträge übernimmt er aber nur für PHP4 (Apache_Modul). Woran liegt das? Was muss ich anderst machen?
Wäre sooo glücklich dieses Thema so schnell wie möglich erfolgreich abschließen zu können. Bitte helft mir!
 
Last edited by a moderator:
Hm.. damn it!
Ist wohl nicht möglich.
Ein nicht sehr begabter 1&1-Techniker konnte mir leider auch nicht viel weiterhelfen.
Naja, auf jedenfall weiß ich jetzt, dass man php_admin_value da nicht benutzen kann ;)
Jetzt bleiben noch 2 Möglichkeiten:
1. weiterhin als CGI drauf lassen und die dir-Rechte alle checken (wie es bei 1&1 Webhosting gelöst ist... oder:
2. Wieder neu kompilieren :P... und das ganze dann mit einer 2. Apache-Instanz hinbiegen.. wie.. und ob das dann gleichzeitig funktioniert konnte ich leider irgendwie noch nicht ganz erkunden.

Ist doch echt ein Dreck.. da compiled man da stundenlang.. freut sich, dass man es endlich geschafft... und dann dieser Security-Shit!
Damn it!

Vielleicht hat ja von euch noch einer eine Idee.
Zu 1. noch ein kleiner Gedanke:
z.Z. läuft der Apache unter : Group:www User:wwwrun.
Die User laufen unter Group:www User:usr_ftp_xxx
Ist vielleicht auch nicht gerade die schlauste Einstellung, eh? Wenn ich das ändern würde und dann die Leserechte für die Gruppe entziehen würde, sollte es doch eigentlich funktionieren, oder?
Weil wenn ich die jetzt entziehe hat der liebe Indianer ja keine Rechte mehr... und dann spuckt er die allerseits geliebte 403 aus :D
 
server4downs said:
Die php_admin_value Einträge übernimmt er aber nur für PHP4 (Apache_Modul). Woran liegt das?
Daran, daß es keine Kommunikation über Konfigurationen zwischen Apache und einem CGI-Interpreter gibt.
Stell Dir vor, Du schmeißt das mod_php raus. Dann erhälst Du eine Menge Fehlermeldungen (u.a. das 'php_admin_value' keine gültige Direktive ist).

Erstens solltest Du suexec nutzen (genau wie für Perl) und zweitens, wenn Du nicht den ganzen Verzeichnisbaum freigeben willst, mußt Du den Apache chrooten. (Genau wie für Perl)

huschi.
 
Im stuck with it

Hallo,

*Schaufel wegleg... Thema ausgegraben*
Also, ich habe es entzwischen geschafft PHP4 und PHP5 gleichzeitig laufen zu lassen. PHP4 (noch) als Apache-Modul und PHP5 mit suexec (yes, it actually works!). Bis ich suexec von seinem/ihrem Glück überzeugen konnte hat es schon die ein oder andere Stunde gebraucht, da ich versch. header-Files anpassen musste und suexec neukompilieren musste.
So, jetzt mag sich einer fragen: "Wo ist dann überhaupt noch das Problem?".
Richtig. Es gibt noch eins. Ich habe irgendwie keine Lust das System so halber offen stehen zu lassen (ohne basedir), wie es bei 1&1 und anderen Hostern der Fall ist. (lustig ist bei 1&1, dass sogar noch PHP2-Binaries auf'm Server rumgammeln)
Also, die Frage lautet folgendermaßen: ist es auch mit der einfachen CGI-Edition möglich für jeden vhost ein seperates php.ini-File anzulegen (und wenn: wie?) oder kennt sich jemand gut mit der Installation von fastcgi aus (bitte nicht den Link zu debianhowto posten), denn mit fastcgi bin ich bis jetzt nicht wirklich vorwärts gekommen.
Oder gibt es noch eine andere Möglichkeit den User fest in seinem Doc-Root einzusperren.

Thanks for any help!
 
Irgendwie fies das ein "open_basedir = ~" nicht funkt :(
Im Notfall könntest du für jeden User eine eigene php4-cgi mit angepasstem php.ini pfad erstellen, der pfad von php.ini kommt 1-2 mal in der Datei vor, den sollte man eigentlich per regulären Ausdrück ersetzten können so dass du die Datei nicht jedes mal neu kompilieren mußt. Wären halt ein paar zusätzliche MB pro User :(

Wenn ich FastCGI richtig verstanden hab wird da dauerhaft ein oder mehrere Prozesse mit den entsprechenden Skript(en) am laufen gehalten. Du brauchst wenn du für jeden Benutzter ein anderes open_basedir haben willst jeweils einen eigenen Prozess, d.h. es wären laufend mindestens soviele Prozesse am laufen wie du User hast die php ausführen. Konnte bei vielen Usern kontraproduktiv sein...
 
Wenn mal jmd auf diesen Thread stoßen sollte....
Here is the solution:
 
Ich habe einen Strato Server mit SuSE 9.0 und Confixx 3.0. Nach Deiner Anleitung habe ich PHP5 neben PHP4 installiert, was auch soweit ganz gut geklappt hat. Das blöde ist nur: wenn ich eine phpinfo.php4 anlege funktioniert diese, eine phpinfo.php5 leider nicht. Auch nicht im Unterverzeichnis cgi-bin. Ich bekomme immer einen Serverfehler 500:

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Premature end of script headers: phpinfo.php5

Woran mag dies nun noch liegen? Falls es etwas mit suexec zu tun haben sollte, hier mal die Ausgabe auf suexec2 -V:

srv01:/ # suexec2 -V
-D AP_DOC_ROOT="/srv/www/htdocs"
-D AP_GID_MIN=96
-D AP_HTTPD_USER="wwwrun"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=96
-D AP_USERDIR_SUFFIX="public_html"
-D FPSTUBDIR="/usr/local/frontpage/version5.0/apache-fp/_vti_bin"
-D CONFIXX_HOME_NAME="confixx"

Die Userwebs legen in /srv/www/htdocs/webX/html ihre Webseiten ab.
 
Ich habe den gleichen Fehler, sobald ich die eine *.php5 Datei aufrufe kommt es zum Serverfehler 500. Grund ist, dass confixx in der vhost.conf eine suexec Eintrag für jedes Verzeichnes anlegt (webx:ftponly). Wenn man diesen Eintrag rausnimmt läuft alles, ist dann natürlich sehr unsicher. Hat das Problem schon jemand gelöst wie ich php4 und php5 nach dem HOWTO von server4down mit suexec zum Laufen bekomme?

-D AP_DOC_ROOT="/srv/www/htdocs"
-D AP_GID_MIN=96
-D AP_HTTPD_USER="wwwrun"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=96
-D AP_USERDIR_SUFFIX="public_html"


Danke!
 
Last edited by a moderator:
Raufi said:
Grund ist, dass confixx in der vhost.conf eine suexec Eintrag für jedes Verzeichnes anlegt (webx:ftponly). Wenn man diesen Eintrag rausnimmt läuft alles
Dann schau mal in der suexec.log nach, was für ein Fehler dort auftaucht.

huschi.
 
Code:
[2006-08-10 18:07:13]: uid: (636/web1) gid: (106/106) cmd: php
[2006-08-10 18:07:13]: command not in docroot (/usr/bin/php5/php)
 
Sehe ich genauso Thorsten ;)

Ich habe jetzt keine Lust hiernochmal zu schildern, wie du diesen Fehler beseitigst, weil ich es nicht sinnvoll finde, deshalb verweise ich dich auf das Tutorial welches ich gestern geschrieben habe, dort habe ich Schritt für Schritt erläutert wie du vorgehen musst und auch diesen Fehler erwähnt und eine Lösung dazu aufgeschrieben.
Solltest du nicht weiterkommen, dann schau bitte mal bei
vorbei, denn dort wurde auch schon darüber diskutiert.

Lg
Free
 
Back
Top