[HowTo] PHP4/PHP5 als CGI - gepatcht (deutsches HowTo)

  • Thread starter Thread starter server4downs
  • Start date Start date
Hallo

danke für deine schnelle antwort, schade das dies nicht möglich ist :(
mmmh.....suPHP soll aber nicht gerade performance förderlich sein, wie ist denn die performance wenn ich >300 domains auf der mühle habe? Ist dann suPHP ratsam oder besser ne andere lösung?

Gruß
ACID25
 
man kann das über den event handler auch automatisieren und ich habe mod_cfgid ohne änderungen an der suexec am laufen...
 
man kann das über den event handler auch automatisieren und ich habe mod_cfgid ohne änderungen an der suexec am laufen...
Was kann man genau über Handler machen?
Ohne Erläuterung strebt die Aussage deines Postings eher gegen NULL ;)
 
also ich lasse die vhost.conf, php.ini und die php.cfgi automatisch für jede domain anlegen....so das jeder nutzer seine php.ini hat...und php unter dem ftp user läuft...ich schreibe das morgen mal voreinander....

gruss ACID25
 
Nahe an der Verzweifelung - Es will einfach nicht!

Hallo Zusammen, auch ich bin neu hier und schon mächtig begeistert was das HowTo angeht und hier alles an Problemfällen diskutiert wird. Ich möchte mich an dieser Stelle erst mal für die tolle Arbeit der Autoren bedanken.:)

Nun zu meinem Problem:

Ich habe dieses HowTo sowie das HT für suexec genauestens befolgt und mehrfach ausgeführt, jedoch mit dem selben Fehler wie Rec@ll. Leider gab es keine Anwort auf sein letztes Posting (Seite 10 letztes Posting). Ich habe nun 4 Tage alles in meiner Macht stehende versucht, um das selbst in den Griff zu bekommen, nun brauche ich aber wirklich Hilfe! Hierfür meinen Dank im Voraus.

Nun zur Config:
OpenSuse 10, Apache 2, Plesk 8.2 (Strato)

Php4 läuft tadellos.

suexec2 -V:
PHP:
 -D AP_DOC_ROOT="/usr/bin/php5"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="wwwrun"
 -D AP_LOG_EXEC="/usr/local/apache2/logs/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"


Meine httpd.include: (Gleich ob ich es direkt in die httpd.conf oder eben hier include)
PHP:
<Directory "/usr/bin/php5">
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
ScriptAlias /php5-cgi /usr/bin/php5
Action application/php5-cgi /php5-cgi/php
AddType application/php5-cgi .php5


Meine suexec_log:
PHP:
[2007-12-10 14:00:26]: too few arguments
[2007-12-10 14:00:42]: uid: (10001/isolution) gid: (10001/10001) cmd: php
[2007-12-10 14:22:09]: too few arguments
[2007-12-10 14:24:54]: uid: (10001/isolution) gid: (10001/10001) cmd: php


Mein error_log:
PHP:
[Mon Dec 10 14:24:54 2007] [error] [client 81.169.145.29] Premature end of script headers: php


Alle weiteren Informationen gibst umgehend nach Aufforderung!

Wie bereits erwähnt, habe ich das ganze bald 100x durchgespielt und finde den Fehler leider nicht selbst, ich wäre für jede Hilfe sehr sehr dankbar.

Das Bier habe ich schon mal vorsorglich kalt gestellt! Momentan ist mir aber eher nach Heulen und Schnaps
 
Last edited by a moderator:
In der suexec.log steht folgendes zu verschiedenen Zeiten:

Code:
[2007-07-22 00:48:11]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:48:11]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:48:12]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:48:40]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:58:19]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:58:20]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:58:20]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 00:58:25]: uid: (10004/djrecall) gid: (10001/10001) cmd: php
[2007-07-22 01:27:35]: uid: (10004/djrecall) gid: (10001/10001) cmd: php

Hilft mir aber irgendwie auch nicht weiter.

Hallo Rec@ll, es wurde keine Antwort auf diesen Beitrag verfasst, hast du eine Lösung gefunden??? Habe das gleiche Problem

Danke
isolution
 
Hallo isolution.
Die solution (was für ein Wortspiel) ist in diesem Fall eventuell sogar trivial...
Du benutzt wahrscheinlich das falsche Binary. Ab 5.2 (?) wird für CGI das Binary als "php-cgi" abgespeichert.
Code:
[COLOR=#000000][COLOR=#0000bb]Action application[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]php5[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000bb]cgi [/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]php5[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000bb]cgi[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]php-cgi[/COLOR][/COLOR]
Hilft das?
 
S4Y - Suse 9.3 | Confixx Premium | Premature end of script headers: php

Hallo,
ich hoffe doch mal, das dieser Thread noch gelegentlich beobachtet wird, denn ich bin heftig am verzweifeln!
Ich habe die ganzen 12 Seiten gelesen und versucht es hinzubekommen, aber scheinbar fehlt mir wirklich eine Windung!
Vielleicht hat ja einer noch einen Denkanstoss...

Ich habe bei S4Y einen vServer mit Suse 9.3 und Confixx.
Vorinstalliert ist PHP4 und möchte nun gern PHP5 als CGI nutzen.

Die Vorarbeiten habe ich laut diesem Tut soweit auch abgearbeitet, allerdings bekomme ich beim besten Willen einen Fehler nicht weg: "Premature end of script headers: php"

Sobald ich meine info.php5 aufrufe kommt dieser Fehler.
Das Suexec2_log sagt dazu:
Code:
[2008-04-01 13:52:57]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 13:53:46]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 13:54:13]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 13:55:26]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 15:46:00]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 16:08:48]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 16:22:38]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 19:56:58]: uid: (636/web1) gid: (104/104) cmd: php
[2008-04-01 20:12:09]: uid: (636/web1) gid: (104/104) cmd: php
Der Apache 2.0.53 meint dazu:
Code:
[Tue Apr 01 13:52:57 2008] [error] [client 90.187.152.240] Premature end of script headers: php
[Tue Apr 01 13:53:46 2008] [error] [client 90.187.152.240] Premature end of script headers: php
[Tue Apr 01 13:54:13 2008] [error] [client 90.187.152.240] Premature end of script headers: php
[Tue Apr 01 13:55:26 2008] [error] [client 90.187.152.240] Premature end of script headers: php
[Tue Apr 01 15:45:46 2008] [error] [client 163.244.63.125] attempt to invoke directory as script: /srv/www/web1/html/cgi-bin/
[Tue Apr 01 15:46:00 2008] [error] [client 163.244.63.125] Premature end of script headers: php
[Tue Apr 01 16:08:48 2008] [error] [client 163.244.62.122] Premature end of script headers: php
[Tue Apr 01 16:17:39 2008] [notice] caught SIGTERM, shutting down
[Tue Apr 01 16:18:11 2008] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Apr 01 16:18:11 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Tue Apr 01 16:18:13 2008] [notice] Apache/2.0.53 (Linux/SUSE) configured -- resuming normal operations
[Tue Apr 01 16:22:38 2008] [error] [client 163.244.62.120] Premature end of script headers: php
[Tue Apr 01 19:56:58 2008] [error] [client 217.94.11.47] Premature end of script headers: php
[Tue Apr 01 20:12:09 2008] [error] [client 217.94.11.47] Premature end of script headers: php

So, und da hörts auf, ich habe verschieden konstellationen im suexec probiert, aber nichts funzt, läuft alles auf den fehler hinaus.
Ich hab zwar das gefühl, das ich kurz vor der lösung stehe, kann mich aber nicht bewegen ^^ :o

Hier noch ein paar Info's, die den Pro's hilfreichen sein könnten:
suexec2 -V
Code:
 -D AP_DOC_ROOT="/srv/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="wwwrun"
 -D AP_LOG_EXEC="/var/log/apache2/suexec2.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="html"

PHP5 Version:
Code:
/srv/www/php5 # ./php -v
PHP 5.2.5 (cli) (built: Mar 31 2008 22:08:33) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

geänderter abschnitt in httpd.conf in /etc/apache2 habe ich über den Confixx Abschnitt eingefügt
Code:
<Directory "/srv/www/php5">
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
ScriptAlias /php5-cgi /srv/www/php5
Action application/php5-cgi /php5-cgi/php
AddType application/php5-cgi .php5

Wenn einer noch was braucht, nur bescheid sagen, ich besorg alles was ich kann, damit das zum laufen kommt! Ich tret seit 2 Tagen einfach auf der Stelle!!
Vielen Dank schonmal für jeden Hinweis!

Grüße
Peeper
 
PHP 5.2.5 (cli)
Wieso cli, du willst doch cgi

Also wohl so:
Code:
ScriptAlias /php5-cgi /srv/www/php5
Action application/php5-cgi /php5-cgi/php-cgi
Oder täusche ich mich da?
 
du meinst das bei der php version?? ./php -v ???
hmm..das is mir ja noch gar nich aufgefallen... sollte ich was falsche runtergeladen haben?? :confused:
 
ich nochmal,

also es funktioniert soweit alles ganz gut! allerdings hat sich noch eine frage aufgetan:

Welche PHP.INI ist denn jetzt für php5-cgi zuständig? gibt es überhaupt eine, und wenn ja wo?
phpinfo() meint /etc/php5 wäre ne idee, allerdings existiert das verzeichnis ist.

Testweise habe ich das dann mal erstellt, und die php.ini aus /etc reinkopiert.
phpinfo() hat sie dann auch gefunden und schien auch die einstellungen zu übernehmen.

Allerdings habe ich auf einer Testseite dann folgenden Fehler bekommen:
Code:
Warning: session_start() [function.session-start]: open(/var/lib/php/sess_21e16b6aa4e3e625540b2ca21c6117f9, O_RDWR) failed: Permission denied (13) in /srv/www/web2/html/www/libraries/joomla/session/session.php on line 407

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /srv/www/web2/html/www/libraries/joomla/session/session.php:407) in /srv/www/web2/html/www/libraries/joomla/session/session.php on line 407

Warning: Cannot modify header information - headers already sent by (output started at /srv/www/web2/html/www/libraries/joomla/session/session.php:407) in /srv/www/web2/html/www/libraries/joomla/session/session.php on line 410

Apache2 Error_Log:
Code:
[error] [client 217.94.11.47] PHP Warning:  PHP Startup: Unable to load dynamic library...
...kommt dann für meherere extensions *.so

Vielleicht hat ja einer ne idee, google hat nix richtiges ausgespuckt...
Thanks in advance..

Peeper
 
phpinfo() meint /etc/php5 wäre ne idee.
Wenn phpinfo das sagt, dann kann man das meist glauben...
Da wirst du wohl noch einiges in der php.ini und überhaupt, einstellen dürfen.
Insbesondere den session.temp_path, meist auf /tmp
 
gd-lib

Hallo,

erstmal danke für den Einsatz den einige hier zeigen.
Ich versuche seit gestern abend Php4 als Modul und Php5 als cgi ans laufen zu bringen.

Ich glaube ich hatte jeden Fehler der auch hier behandelt wurde. Manchen konnte ich schnell fixen... andere... naja....

So, nun zu meinem Problem:

System ist Debian 3.1 Sarge mit ServerAdmin24 bei Strato.
Wegen dem SA24 muss ich ja leider bei Php4 bleiben.
Apache2. PHP 5.2.0

Ich habe es endlich geschafft, beide PHP-Versionen ans laufen zu bekommen!!!
Nur leider gibt es hier ein AAABER!
Wie S4D schon sagte, sind die configure Parameter ja nur minimal. Habe da z.B. schon --with-zip und so zugepackt. Was ich vergessen habe, ist der GD Kram. Dachte ich mir gut, installierste das eben nach. Habe dann apt-get install php5-gd rattern lassen und es gab keine Fehlermeldung.
Den Apachen neu gestartet (auch da keine Fehlermeldung). Und was war?
Error 500. In den Logs der übliche kram, mit dem "Premature end of script headers" gedöns. Kennen wir ja schon.
PHP5 nochmal nach dem HowTo installiert schon gehts wieder. Nur halt ohne GD.

Bin ich einfach nur blöd?
Hat da jemand eine Idee wie ich da noch GD mit rein bekomme?

Vielen Dank!
MfG
droni
 
Hallo.

PHP5 einfach mit --with-gd und --with-freetype-dir=/usr kompilieren.
Dann sollte es gehen.

Viel Spaß :)
 
Völlig unabhängig von der Lösung die combie geposted hat bin ich nach Anwendung des Howtos ebenfalls darauf gekommen.

Ein Glück, dass ich mich nicht auf neues Kompilieren von suexec und weiß ich nicht was noch so geschrieben wurde eingelassen habe.

Die einfach Lösung meiner premature- und mime- Fehler war einfach.

1. Howto befolgen
2. statt
Code:
ScriptAlias /php5rocks /usr/bin/php5
Action php5-cgi /php5rocks/php
AddType php5-cgi .php5
einfach
Code:
ScriptAlias /php5 /usr/bin/php5
Action application/x-httpd-php5 /php5/php-cgi
AddType application/x-httpd-php5 .php5
benutzen.
3. server4downs um Einarbeitung von Punkt 2 bitten ;)


Der Kunde freut sich jetzt jedenfalls. System: Debian etch + Plesk8

Vielen Dank für diesen Patch :)

2. Edit: Für Debian kann ich noch sagen, dass der Php-Ini-Pfad auf /etc/php5/apache2 geändert werden kann, sofern gewünscht und Apache2 eingesetzt wird.

Mit freundlichem Gruß

Christoph Zysik
 
Last edited by a moderator:
Huhu,

ich habe dieses Howto gefunden und bin begeistert, wie ausführlich alles beschrieben ist. Danke dafür.

Leider habe ich folgende Situation. Ich habe einen Suse Linux 10.2 Server mit Plesk 8.6, Php5 mod_php und mysql5. Nun möchte ich php5 mod_php auf cgi php umstellen, da ich immer das Problem habe, dass nach gewissen Installationen über php Scripte der Apacheuser Besitzer der Dateien ist.

Gibt es dafür ein Howto, dass die Umstellung von vorhandenem mod_php auf cgi php beschreibt?

Vielen Dank im Voraus.
Gruß Danny.
 
Ich habe noch eine Verständnisfrage:

Wenn man PHP als fcgi einbindet, wird doch open_basedir überflüssig, oder?
Denn der User, als der PHP ausgeführt hat, kann ja sowieso nur auf seine eigenen Dateien zugreifen.

Oder vielleicht doch nicht? Wenn ich jetzt eine Datei habe, die a+r gesetzt ist, können doch alle Benutzer sie lesen. Auch der PHP-User? Das wär schlecht für /etc/passwd und so weiter.

Ist das so korrekt?
 
Habe php5 nach der Anleitung hier zum laufen bekommen, jetzt fehlt mir aber curl. Wie bekomme ich das nun auch unter Php5?

das kann ich doch nciht machen oder sehe ich das falsch?!:
Code:
# apt-get install php5-curl
 
Back
Top