PHP 5.1 als fcgid Modul verursacht Internal Server Error

Apache, Lighttpd, nginx, Cherokee
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

Hallo,
ich habe auf meinem Webserver (Apache2) PHP4.3 als Modul und PHP5.1 als fcgid installiert.

Files mit dem Suffix php5 sollen also über PHP5 abgearbeitet werden. Dazu habe ich in der vhost.conf folgenden Eintrag gemacht:

Code: Select all

AddHandler fcgid-script .php5
<Directory /var/www/vhosts/meine-domain.de/httpdocs>
     FCGIWrapper /opt/php51/cgi-bin/php5 .php5
     Options ExecCGI
     allow from all
</Directory>
Rufe ich nun solche php5 Seite auf, wird mir nur ein 500 Internal Server Error angezeigt.
Im error-log des hosts taucht ein

Code: Select all

Premature end of script headers: info.php5
auf.

Rufe auf der Console die gleiche Seite per

Code: Select all

/opt/php51/cgi-bin/php5 info.php5
auf, wird sie als HTML Code dargestellt.

Hat wer eine Idee was ich falsch mache?
dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by dtdesign »

Verwendest du eventuell suexec2 und hast die Rechte nicht korrekt gesetzt? Welcher Fehler wird den im Errorlog deines Webservers angezeigt? "Gehört" das PHP-Script dem Benutzer "root"?

Also, poste bitte mal ein paar mehr Informationen, welche Mods im Webserver geladen sind, die das Verhalten von PHP oder des Webservers beeinflussen können, bzw. welchen Webserver nutzt du?

Gruß
dtdesign
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

dtdesign wrote:Verwendest du eventuell suexec2 und hast die Rechte nicht korrekt gesetzt? Welcher Fehler wird den im Errorlog deines Webservers angezeigt? "Gehört" das PHP-Script dem Benutzer "root"?

Also, poste bitte mal ein paar mehr Informationen, welche Mods im Webserver geladen sind, die das Verhalten von PHP oder des Webservers beeinflussen können, bzw. welchen Webserver nutzt du?

Gruß
dtdesign
An suexec hatte ich auch schon gedacht. Auf dem Server (Debian Sarge, Apache 2) läuft suexec.

Bisher habe ich folgendes schon probiert:

1. Konfiguration mit suexec

Inhalt der vhosts.conf

Code: Select all

AddHandler fcgid-script .php5
SuexecUserGroup ftp-01 psacln
<Directory /var/www/vhosts/meine-domain.de/httpdocs>
        FCGIWrapper /var/www/vhosts/meine-domain.de/bin/php5 .php5
        Options ExecCGI
        allow from all
</Directory>
Danach kam im /var/log/apache2/suexec.log ein

Code: Select all

[2007-04-13 10:43:57]: uid: (10001/ftp-01) gid: (2524/2524) cmd: info2.php5
[2007-04-13 10:43:57]: file has no execute permission: (/var/www/vhosts/meine-domain.de/httpdocs/info2.php5)
Deshalb ein chmod 744 info2.php5 gemacht, was dann ein

Code: Select all

[2007-04-13 10:46:51]: uid: (10001/ftp-01) gid: (2524/2524) cmd: info2.php5
bringt.

Im vhosts error.log tauch die gnaze Zeit aber nur ein

Code: Select all

Premature end of script headers: info2.php5
auf.

2.1. Konfiguration ohne suexec

Inhalt der vhosts.conf

Code: Select all

AddHandler fcgid-script .php5 
<Directory /var/www/vhosts/meine-domain.de/httpdocs> 
     FCGIWrapper /opt/php51/cgi-bin/php5 .php5 
     Options ExecCGI 
     allow from all 
</Directory> 
/var/log/apache2/suexec.log =>

Code: Select all

[2007-04-13 10:46:51]: uid: (10001/ftp-01) gid: (2524/2524) cmd: info2.php5
Im vhosts error.log tauch nur ein

Code: Select all

Premature end of script headers: info2.php5
auf.


Hier die Infos einer phpinfo:

Code: Select all

Apache Version  Apache/2.0.54 (Debian GNU/Linux) mod_python/3.1.3 Python/2.3.5 PHP/4.3.10-19 mod_ssl/2.0.54 OpenSSL/0.9.7e mod_perl/1.999.21 Perl/v5.8.4  

Loaded Modules  core mod_access mod_auth mod_log_config mod_logio mod_env mod_setenvif prefork http_core mod_mime mod_status mod_autoindex mod_negotiation mod_dir mod_alias mod_so mod_actions mod_cgi mod_fcgid mod_include mod_python mod_perl mod_php4 mod_rewrite mod_ssl mod_suexec mod_userdir  
Ich hoffe das reicht erstmal an Infos?
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by kase »

steht der LogLevel des Apache auf Debug? Falls nicht...

Ausgabe von

/opt/php51/cgi-bin/php5 -v

Ausgabe von

ls -al /opt/php51/cgi-bin/php5
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

kase wrote:steht der LogLevel des Apache auf Debug? Falls nicht...
Nun schon :-)

Ausgabe von /var/log/apache2/error.log

Code: Select all

[Fri Apr 13 12:03:52 2007] [notice] mod_fcgid: server /var/www/vhosts/meine-domain.de/httpdocs/info2.php5(29386) started
failed to open log file /var/log/apache2/suexec.log
fopen: Permission denied
[Fri Apr 13 12:03:58 2007] [notice] mod_fcgid: process /var/www/vhosts/meine-domain.de/httpdocs/info2.php5(29386) exit(communication error), terminated by calling exit(), return code: 1
Ausgabe von /var/log/apache2/suexec.log

Code: Select all

[2007-04-13 12:03:52]: uid: (10001/ftp-01) gid: (2524/2524) cmd: info2.php5
Ausgabe von /opt/php51/cgi-bin/php5 -v

Code: Select all

PHP 5.1.6 (cgi-fcgi) (built: Mar 11 2007 09:49:23)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with the ionCube PHP Loader v3.1.29, Copyright (c) 2002-2007, by ionCube Ltd.
Ausgabe von ls -al /opt/php51/cgi-bin/php5

Code: Select all

-rwxr-xr-x  1 root root 5460140 Mar 11 04:57 /opt/php51/cgi-bin/php5
dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by dtdesign »

Wieso hinterlässt PHP einen Eintrag in der suexec2-log obwohl der Indianer in seinem Errorlog sagt, dass PHP auf den Logfile (logischerweise, da nicht root) zugreifen darf.

Setzt mal den Logfile für den VHost im Hinblick auf suexec2 auf irgendeinen Pfad, den der Benutzer beschreiben darf, eventuell /tmp

Gruß
dtdesign
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

dtdesign wrote:Wieso hinterlässt PHP einen Eintrag in der suexec2-log obwohl der Indianer in seinem Errorlog sagt, dass PHP auf den Logfile (logischerweise, da nicht root) zugreifen darf.

Setzt mal den Logfile für den VHost im Hinblick auf suexec2 auf irgendeinen Pfad, den der Benutzer beschreiben darf, eventuell /tmp

Gruß
dtdesign
Ich hab das Logfile einfach mal grad auf 777 gesetzt, nun bekomm ich folgendes:

/var/log/apache2/error.log

Code: Select all

[Fri Apr 13 13:37:34 2007] [notice] mod_fcgid: server /var/www/vhosts/meine-domain.de/httpdocs/info2.php5(30094) started
[Fri Apr 13 13:37:40 2007] [notice] mod_fcgid: process /var/www/vhosts/meine-domain.de/httpdocs/info2.php5(30094) exit(communication error), terminated by calling exit(), return code: 255
/var/log/apache2/suexec.log

Code: Select all

[2007-04-13 13:37:34]: uid: (10001/ftp-01) gid: (2524/2524) cmd: info2.php5
[2007-04-13 13:37:34]: (8)Exec format error: exec failed (info2.php5)
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by kase »

Setz mal das PHP-Binary (php5) und das Verzeichnis, in dem es liegt (cgi-bin), auf den User, den du mit suexec gesetzt hast. Falls du suexec nicht verwendest, was ich dir aber sehr empfehlen würde, setz es auf www-data:www-data. Wenn du suexec verwendest, muss das PHP-Binary aber glaube ich in deinem docroot Pfad von suexec liegen, welcher das ist, sagt dir ein "suexec -v" (oder so ähnlich)

Außerdem deaktivier unbedingt mal (testweise) den ionCube PHP Loader, der ist mehr als bekannt dafür, "komische" Fehler zu produzieren.
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

kase wrote:Setz mal das PHP-Binary (php5) und das Verzeichnis, in dem es liegt (cgi-bin), auf den User, den du mit suexec gesetzt hast.
Ich habe ja vorher das php5 Binary extra kopiert und den user entsprechend angepasst

Code: Select all

-rwxr-xr-x  1 ftp-01 psacln 5460140 Apr 11 17:50 /var/www/vhosts/meine-domain.de/bin/php5
Falls du suexec nicht verwendest, was ich dir aber sehr empfehlen würde, setz es auf www-data:www-data. Wenn du suexec verwendest, muss das PHP-Binary aber glaube ich in deinem docroot Pfad von suexec liegen, welcher das ist, sagt dir ein "suexec -v" (oder so ähnlich)
-su: suexec: command not found
Außerdem deaktivier unbedingt mal (testweise) den ionCube PHP Loader, der ist mehr als bekannt dafür, "komische" Fehler zu produzieren.
Hat nichts gebracht :-/
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by kase »

Entfern mal die Rechte für OTHER vom kopierten php-binary.

Außerdem poste mal die Rechte von deiner info2.php

Edit: Evtl heißt es bei dir suexec2 -v, such mal mit find danach.
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

kase wrote:Entfern mal die Rechte für OTHER vom kopierten php-binary.

Code: Select all

-rwxr-x---  1 ftp-01 psacln 5460140 Apr 11 17:50 /var/www/vhosts/sparkasse-bodenwerder.de/bin/php5
Keine Änderung
Außerdem poste mal die Rechte von deiner info2.php

Code: Select all

-rwxr--r--  1 ftp-01 psacln 21 Apr 13 10:42 httpdocs/info2.php5
Edit: Evtl heißt es bei dir suexec2 -v, such mal mit find danach.
Ein locate suexec bringt mir das

Code: Select all

/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-enabled/suexec.load
/opt/psa/suexec
/opt/psa/suexec/psa-suexec2
/usr/lib/apache2/modules/mod_suexec.so
/usr/lib/apache2/suexec2
/usr/lib/apache2/suexec2.distrib
/usr/share/man/man8/suexec2.8.gz
/var/log/apache2/suexec.log
Aber weder ein "/opt/psa/suexec/psa-suexec2 -V" noch ein "/usr/lib/apache2/suexec2 -V" bringt irgendwelchen Output.
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by kase »

Irgendwie ist das alles sehr merkwürdig.

Welche mod_fcgid Version verwendest du? Aktuell ist 2.1.

Ruf mal dein Script direkt auf und poste bitte den Output:

Code: Select all

/var/www/vhosts/sparkasse-bodenwerder.de/bin/php5 /var/www/vhosts/meine-domain.de/httpdocs/info2.php5
Edit:

Was mich am meisten verwundert ist, warum bei dir suexec versucht, dein PHP Script zu starten, und nicht dein php-binary. Das ist irgendwie sehr merkwürdig. Bei mir startet fcgid nämlich das php-binary. Und dass eine php Datei nicht "einfach so" zu starten geht, ist auch logisch...

Bei mir sieht das LOG so aus:

Code: Select all

error.log

[Mon Jan 22 18:49:55 2007] [notice] mod_fcgid: call /var/www/vhosts/legendz.lan/web/phpinfo.php5 with wrapper /var/www/vhosts/legendz.lan/fastcgi/php-fcgi
[Mon Jan 22 18:49:55 2007] [notice] mod_fcgid: server /var/www/vhosts/legendz.lan/web/phpinfo.php5(12753) started

suexec.log
[2007-01-22 18:49:55]: uid: (1000/timo) gid: (1000/1000) cmd: php-fcgi
Im suexec steht, wie gesagt, nicht die php-Datei, sondern das php-binary, denn eine php Datei lässt sich ja schlecht starten.

Das würde auch erklären, warum du (etwas weiter oben im Thread) die .php5 Datei ausführbar machen musstest, das ist nämlich eigentlich totaler quatsch, die php-Datei muss nur READ haben und kein EXECUTE.
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

kase wrote: Welche mod_fcgid Version verwendest du?
libapache2-mod-fcgid (1.05-1) das ist die aktuelle aus dem Debian Sarge Stable
Ruf mal dein Script direkt auf und poste bitte den Output:
Das ist der Output von phpinfo()

Code: Select all

X-Powered-By: PHP/5.1.6
Content-type: text/html
Edit: leider war der zu lang um hier komplett angezeigt zu werden
ich hab die Datei mal unter http://www.spackentreff.de/info2.txt abgelegt.
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

Niemand mehr eine Anregung oder Idee?
cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by cirox »

Doch,

schmeiss mod_php runter, verwende php4 und php5 über mod_fcgi, mach ne Fallback Möglichkeit auf su_php, dass heisst installier es einfach und schau dir mal genau den Thread an: Zusätzlich achte bitte penibel auf die Rechte.

Klick
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

cirox wrote:Doch,

schmeiss mod_php runter, verwende php4 und php5 über mod_fcgi, mach ne Fallback Möglichkeit auf su_php, dass heisst installier es einfach und schau dir mal genau den Thread an: Zusätzlich achte bitte penibel auf die Rechte.

Klick
Ich versuch ja schon die ganze Zeit php5 als cgi laufen zu lassen, das ist ja das Problem.
gumble
Posts: 18
Joined: 2007-04-12 14:33
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by gumble »

:-D :-D :-D

SO es läuft nun doch.

Ich hab nochmal mein php5 neu kompiliert 8 (grob so nach dieser Anleitung http://www.serversupportforum.de/forum/ ... howto.html ) und dann noch entsprechend die suexec Sachen angepackt wie ich es auch vorher hatt, also mit kopierter php binary im vhoshost home/bin usw.

Tja, und auf einmal ging es :idea:

Danke aber für die SUPER Hilfe hier!
cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by cirox »

Du solltest lieber php mit suhosin patchen als irgendwie anders rumzupfriepeln :)

Code: Select all

./configure 
--prefix=/pfad_zum_php_binary 
--without-pear 
--enable-force-cgi-redirect 
--enable-fastcgi 
--enable-magic-quotes 
--enable-memory-limit 
--with-regex=php 
--disable-rpath 
--disable-debug 
--disable-static 
--with-pic 
--with-layout=GNU 
--enable-calendar 
--enable-sysvsem 
--enable-sysvshm 
--enable-sysvmsg 
--enable-track-vars 
--enable-trans-sid 
--enable-bcmath 
--with-bz2 
--enable-ctype 
--with-db4 
--without-gdbm 
--with-iconv 
--enable-exif 
--enable-filepro 
--enable-ftp 
--with-gettext 
--enable-mbstring 
--enable-shmop 
--enable-sockets 
--enable-wddx 
--with-libxml-dir=/usr 
--with-zlib 
--with-kerberos=/usr 
--with-openssl=/usr 
--enable-dbx 
--enable-soap 
--enable-zip 
--with-mime-magic=/usr/share/file/magic.mime 
--without-mm 
--with-curl=shared,/usr 
--with-zlib-dir=,/usr 
--with-gd=shared,/usr 
--enable-gd-native-ttf 
--with-jpeg-dir=shared,/usr 
--with-xpm-dir=shared,/usr/X11R6 
--with-png-dir=shared,/usr 
--with-freetype-dir=shared,/usr 
--with-imap=shared,/usr 
--with-imap-ssl 
--with-ttf=shared,/usr 
--with-t1lib=shared,/usr 
--with-mcrypt=shared,/usr 
--with-mhash=shared,/usr 
--with-mysql=shared,/usr 
--with-mysqli=shared,/usr/bin/mysql_config 
--with-pspell=shared,/usr 
--with-xsl=shared,/usr 
--with-snmp=shared,/usr 
--with-tidy=shared,/usr 
--with-xmlrpc=shared 
--enable-pdo=shared 
--without-pdo-dblib 
--without-sqlite 
--without-pdo-sqlite 
--with-pdo-mysql=shared,/usr 
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by kase »

Mit das größte Problem ist sicherlich die mod_fcid Version von dir.

Ich habe normalerweise immer mod_fcgid 2.0 bzw teilweise sogar 2.1 benutzt, und musste jetzt wegen Debian Etch wieder Version 1.10 nutzen. Und siehe da, was mit 2.X einwandfrei funktioniert hat, hat die merkwürdigsten und absolut nicht aussagekräftige Fehlermeldungen bei Version 1.10 erzeugt.

Inzwischen habe ich es hinbekommen, woran es genau lag, weiß ich allerdings nicht. Evtl, weil unter 1.10 das php-binary READ für den Apache sein muss, was in der Version 2.X nicht mehr der Fall ist.

Und deine mod_fcid Version (1.05) ist nochmal ein paar "Tage" älter als die 1.10er. Vor allem in Sachen "aussagekräftige Fehlermeldngen" hat sich bei Version 2 einiges getan. Ich kann deshalb nur jedem empfehlen, mindestens 2.0 zu verwenden. Ich hoffe, dass 2.0 oder sogar 2.1 in Debian bald wieder in den unstable Zweig kommen, denn ein Backport nach Etch ist durch die geringen und einfachen Abhängigkeiten sehr einfach zu "backen".
cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin
 

Re: PHP 5.1 als fcgid Modul verursacht Internal Server Error

Post by cirox »

kase wrote: Und siehe da, was mit 2.X einwandfrei funktioniert hat, hat die merkwürdigsten und absolut nicht aussagekräftige Fehlermeldungen bei Version 1.10 erzeugt.
Was hast Du denn für Fehler?
kase wrote: Inzwischen habe ich es hinbekommen, woran es genau lag, weiß ich allerdings nicht. Evtl, weil unter 1.10 das php-binary READ für den Apache sein muss, was in der Version 2.X nicht mehr der Fall ist.
Also ich hab die 1.10 und auf Sarge und Etch laufen und die Starter sind "755" ... auch das PHP Binary hat "755" gehört allerdings einem unpreviligiertem User. Alles läuft bis jetzt sehr gut. Auf jeden Fall 100 mal :) besser als mod_fastcgi und die 500 error haben auch aufgehört. Ich benutze PHP 5.2.1 selbstkompiliert, bzw. 4.4.6. Für 5.2.1 siehe oben. Und keine Children.