Ich habe ein kleines Problem und brauche mal 'n Denkanstoß in die richtige Richtung ...
Folgende Situation:
- FreeBSD 7.2 PRERELEASE + Jails (funktioniert soweit alles stabil)
- Webserver-Jail mit ...
- Apache 2.2 (inkl. suexec + mod_fcgid)
- PHP5 (sowohl Modul, als auch CGI-Version vorhanden)
Die wichtigsten Konfigurationen:
betroffener vHost
Code: Select all
<VirtualHost *:80>
#
# Domain: example.org
# Host: temp
#
ServerName temp.example.org
ServerAdmin support@example.org
DirectoryIndex index.html index.htm index.php index.php3 index.php4 index.php5
CustomLog /usr/local/www/virtual/temp.example.org/logs/access_log combined
ErrorLog /usr/local/www/virtual/temp.example.org/logs/error_log
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# SuexecUserGroup example_user example_group
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# php_admin_flag engine off
FCGIWrapper /usr/local/www/virtual/temp.example.org/php/wrapper .php
DefaultInitEnv PHPRC "/usr/local/www/virtual/temp.example.org/php"
DefaultInitEnv PHP_FCGI_CHILDREN "5"
DefaultInitEnv PHP_FCGI_MAX_REQUESTS "100"
AddHandler fcgid-script .php .php3 .php4 .php5 .phtml
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DocumentRoot "/usr/local/www/virtual/temp.example.org/htdocs/"
<Directory "/usr/local/www/virtual/temp.example.org/htdocs/">
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>Code: Select all
[root@www1 virtual]# suexec -V
-D AP_DOC_ROOT="/usr/local/www/virtual"
-D AP_GID_MIN=10000
-D AP_HTTPD_USER="www"
-D AP_LOG_EXEC="/var/log/httpd-suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=10000
-D AP_USERDIR_SUFFIX="public_html"Code: Select all
root@www1 php]# cat wrapper
#!/bin/sh
exec /usr/local/bin/php-cgi "$@""SuexecUserGroup"-Anweisung in der vHost-Konfiguration einkommentiere.
Ich erhalte dann im Log des betroffenen vHosts ...
Code: Select all
[Thu Apr 23 11:47:19 2009] [error] [client XXX.XXX.XXX.XXX] Premature end of script headers: index.php
[Thu Apr 23 11:56:23 2009] [warn] (53)Software caused connection abort: mod_fcgid: read data from fastcgi server error.was natürlich gewollt ist und dann nicht mehr auf den FastCGI-Socket zugreifen kann. - Genau weiß ich dies aber nicht.
Mir scheint der Ablauf in welchem ein solcher Request beantwortet wird nicht ganz klar zu sein ...
- Request kommt
- Apache erkennt eine Anfrage auf ein CGI-Skript (in diesem Fall PHP)
- FastCGI-Prozess wird gespawnt
- ...
Und genau jetzt frage ich mich, warum der FastCGI-Prozess die Rechte des Webservers ("www") hat (man sieht dies daran,
dass der Socket auch mit diesen Rechten erstellt wird) und nicht die des durch die entsprechende "suexec"-Anweisung
geforderten!?
Evtl. handelt es sich aber auch um gar kein Rechte-Problem, da ja auch keines im Log beklagt wird, dies sollte der Fall
sein (lt. fcgid-Source).
Hat jemand eine Idee?
Dank euch ... Stefan
