Erfahrungen apache2 mit PHP 5 als FastCGI

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 25.10.2007 15:51:32

nein, habe nicht selbst kompiliert, Standard debian stable
Ich nutze auch den phomyadmin von debian, der ja nciht unter /var/www/ installiert ist (da ist ja nur der symlink, über den ich auch drauf zugreife), ich glaube ich musste nur in dem phpmyadmin ordner ein paar rechte von dateien verändern, damit der user unter dem der phpmyadmin ausgeführt werden soll auch die dateien lesen darf. Das Wrapper Script liegt allerdings unter /var/www/conf/...

Aber ichhabe ansonsten momentan leider keine idee zu deinem Problem...
Gruß,
SeeDyX

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 26.10.2007 17:44:57

Wie lautet denn der VHOST für phpmyadmin unter sites-available?

Zu dem Fehler konnte ich nur das hier finden:
http://www.wh-forum.de/coding-webdesign ... l-php.html

Meiner Meinung nach sollte das also mit suexec zu tun haben.

Hmm... da fällt mir ein: eventuell ist ja suphp enabled :oops:

Code: Alles auswählen

$ sudo a2dismod suphp
Module suphp disabled; run /etc/init.d/apache2 force-reload to fully disable.
Da scheint der Hund begraben zu liegen:
Nun bekomme ich außer auf nicht-php Seiten:

Code: Alles auswählen

Forbidden
You don't have permission to access /index.php on this server.
et voilà eine lesbare Fehlermeldung in /var/log/apache2/error.log :

Code: Alles auswählen

 [client 172.16.240.1] FastCGI: "ExecCGI Option" is off in this directory: /phpmyadmin/index.php
Mann, wie konnte ich nur das suphp Modul übersehen? :roll:

Allerdings funktionieren auch die konfigurierten vhosts nicht.
Im suexec.log findet sich nichts auffälliges.

Die vhost funktionieren wegen dem selben Fehler nicht mehr:
[client 172.16.240.1] FastCGI: "ExecCGI Option" is off in this directory: /index.php

Mal sehen, wie ich das gelöst bekomme...
http://www.google.com/search?q=FastCGI% ... +directory
Hmm... das googlen bringt da nicht viel... Ich werde wohl nochmal alles von vorne durchgehen müssen.

Weshalb FastCGI "ExecCGI Option" is off in this directory ist mir ehrlich gesagt schleierhaft, da in allen vhosts options +ExecCGI steht:

Code: Alles auswählen

$ rgrep -i execcgi /etc/apache2/sites-enabled/
/etc/apache2/sites-enabled/000-default:         Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/www.mypages.home:            Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/gallery2:            Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/vh1:                Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
Im suexec.log steht folgendes:

Code: Alles auswählen

uid: (www-fcgi/www-fcgi) gid: (www-fcgi/www-fcgi) cmd: php-fcgi-starter
Was ich allerdings wegen der merkwürdigen Schreibweise komisch finde: uid: (www-fcgi/www-fcgi)
Das ist ja doppelt??

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 12.12.2007 20:28:32

Hey, bin auch dabei gerade apache2.2 php5 fcgid und suexec zu konfigurieren.
lief eigendlich alles so weit ausser das ich beim startet ne warnung bekommen hab und php5-cgi nicht mit den rechten des users sonder www-data gestartet werden.

warnung:

Code: Alles auswählen

Forcing reload of web server (apache2)...Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 Warning: SuexecUserGroup directive requires SUEXEC wrapper.
Warning: SuexecUserGroup directive requires SUEXEC wrapper.
waiting Warning: SuexecUserGroup directive requires SUEXEC wrapper.
Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 Warning: SuexecUserGroup directive requires SUEXEC wrapper.
nach dem ich die rechte noch mal gesezt habe von suexec: chmod 4750 suexec. war die warnung
nächstes problem die php5-cgi startet garnicht mehr.

fehler aus den logs:

Code: Alles auswählen

[Wed Dec 12 19:08:54 2007] [notice] mod_fcgid: server /var/www/powertuxx.de/htdocs/index.php(4995) started
[Wed Dec 12 19:08:54 2007] [debug] arch/unix/fcgid_proc_unix.c(491): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/4751.169
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4995) exit(server exited), terminated by calling exit(), return code: 255
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4994) exit(server exited), terminated by calling exit(), return code: 255
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4993) exit(server exited), terminated by calling exit(), return code: 255
[Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4992) exit(server exited), terminated by calling exit(), return code: 255
[Wed Dec 12 19:08:56 2007] [warn] mod_fcgid: can't apply process slot for /var/www/bib.powertuxx.de/htdocs/index.php

rechte:

Code: Alles auswählen

755 vuser1.vuser1 domain.ltd
755 root.root conf 
                         conf
                    755 vuser1.vuser1         domain.ltd
                                                        -- 755 vuser1.vuser1     php5-cgid
wissen ist macht

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 12.12.2007 23:23:03

es wird auch keine logfile für suexec erstellt.
es liegt nur acces und error logfile drine
wissen ist macht

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 12.12.2007 23:39:00

Hm... könnte es sein das du das SUEXEC Modul nicht installiert, oder wenn installiert dann nicht aktiviert hast? die Fehlermeldungen klingen irgendwie son bissel dannach.....
Gruß,
SeeDyX

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 13.12.2007 08:55:39

also bei etch ist es ja suexec statt suexec2. also das ding sollte wohl drauf sein, es liegt auch in seinem verzeichnis.
ich kanns auch aufrufen um mir die infos an zu zeigen.
hab schon mal danach mit aptitude gesucht aber der hat nix gefunden.
langsam kozt mich das schon an.
ich spiele schon mit den gedanken es eventuell zu complimieren.
ausdruck wenn ich es aufrufe:
# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
suexec sollte doch eigendlich standard im system sein.

hab gestern auch rausgefunden wieso das ganze lief und die php5-cgi binäry aufgerufen werden konnte,
libapache2-mod-php5 war installiert, deswegen lief es auch, nur wurde es halt mit den rechten von www-data aufgerufen.
deswegen wurde auch suexec umgangen.
wenn ich es selbst complimieren würde, mit welchen Optionen sollte ich es denn configurieren?
oder sieht da jemand noch eine andere möglichkeit ?


Fehler beim aufruf der Webseite.

Code: Alles auswählen

ervice Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
wissen ist macht

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 13.12.2007 09:27:42

ok dann ist es installiert.. und aktiviert?
musst du mal schaun ob die configs in /etc/apache2/mods-availible drin ist (sollte sie) und ob nen link dazu in /etc/apache2/mods-enabled drin ist (das wird wahrscheinlich nciht der fall sein)
also aktivieren mit: a2enmod suexec

libapache2-mod-php muss deinstalliert oder deaktiviert sein, stimmt
Gruß,
SeeDyX

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 13.12.2007 11:21:23

seit dem ich den libapache2-mod-php5 deinstalliet habe, sind die webseiten garnicht mehr erreichbar.

a2enmod suexec ergibt bei mir:
# a2enmod suexec
This module is already enabled!

# ls /etc/apache2/mods-available/ | grep suexec
suexec.load

# ls /etc/apache2/mods-enabled/ | grep suexec
suexec.load

also suexec ist eingetragen aktiviert und gelinkt, deswegen weiss auch immomment auch nicht mehr weiter woran es liegen könnte.

wieso kann er denn keni socket erstellen ?
könnte er irgendwelche probleme mit den rechten haben irgendwo ?
wissen ist macht

TauTau
Beiträge: 1
Registriert: 02.03.2008 02:51:29

Beitrag von TauTau » 02.03.2008 03:01:30

Hallo,

ich habe ein ähnliches Problem wie marc76 auf Seite 8 dieses Threads (403 Fehler bei jedem Zugriff). Ich habe die Umstellung auf fcgi nach diesem Tutorial gemacht, da ich ISPConfig benutze:
http://www.howtoforge.com/forums/showthread.php?t=12302

Das Problem besteht aber seltsamerweise nur bei neu eingerichteten Sites, die bestehenden funktionieren alle. Soweit ich das sehen kann, wird nichtmal der entsprechende php5-cgi prozess gestartet. suexec_log und error.log schreiben gar nichts darüber...
Hat jemand eine Idee, wo ich noch suchen könnte?

barabas
Beiträge: 2
Registriert: 28.04.2008 13:18:32

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von barabas » 28.04.2008 14:06:11

Es geht noch einmal um die Rechteverteilung nach KASEs Konzept auf Seite 3 dieses Threads:
Alle Dateien haben die Rechte USER:www-data 740
PHP kann dann die Dateien als USER:USER durch das 7 für User ausführen.
Der Apache kann alle nicht-PHP-Dateien dank des 4 für die Gruppe www-data lesen. Der Apache selbst muss dafür natürlich als www-data:www-data laufen.
Die Rechte für Others sollten auf jeden Fall 0 sein.
Es ist darauf zu achten, dass PHP-Files als USER:USER und NICHT als USER:www-data ausgeführt werden, da nur so sichergestellt ist, dass PHP nur die Files des vHosts lesen kann.
Außerdem ist darauf zu achten, dass es keinen vHost gibt, der irgendwelche Scripte als www-data ausführen darf, weder User noch Group, www-data dürfen wirklich nur statische Seiten sein (html, Bilder, Files, usw), die der Apache liest.
Auf die Frage hin, wie das denn realisierbar sein solle, sagt KASE:
FTP bzw SCP richtig konfigurieren. Stichworte: User, Group, umask (chmod)
@KASE: Wie soll denn diese "richtige" Konfiguration realistischerweise aussehen? Denn eine übliche Situation ist diese: ein User lädt ein Gemisch aus PHP- und Grafik-/sonstigen Dateien per FTP auf den Server. Der proftpd kann seinerseits nicht für die einen Dateien group "abc" vergeben und für die anderen Dateien die Gruppe "www-data" (oder habe ich da was übersehen??). Also haben alle eine Gruppe nach dem Upload und mein User probiert das nun aber gleich aus (nicht erst einen Tag später, nachdem der nächtliche Cronjob gelaufen ist und die Gruppenrechte korrigiert hat). Das geht natürlich schief. Entweder haben alle Dateien Gruppe "www-data" und das verhindert eben nicht den Skript-Zugriff auf die benachbarten Accounts (und macht ja das ganze fcgi-Gedrösel zum Witz) - oder aber der Apache kann auf alle Nicht-PHP-Dateien nicht zugreifen und quittiert hübsch mit forbidden-Meldungen. Einen Cronjob im Minutentakt kann jetzt aber irgendwie auch keine Lösung sein. Mir kommt das Konzept schräg vor.

Hat einer eine saubere Lösung zur Hand? Mir scheint das Problem ein sehr grundsätzliches zu sein. Wie gesagt: alles fcgid macht doch keinen Sinn, wenn ich für den Apache das mühsam verbarrikadierte Tor wieder aufreissen muss.

barabas
Beiträge: 2
Registriert: 28.04.2008 13:18:32

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von barabas » 29.04.2008 01:57:02

OK. Ich hab' da ein Verständnisproblem gehabt. Das geht natürlich doch.

Alle Vhost'ler müssen via FTP die Gruppe "www-data" mit "Umask 0026 0027" schreiben. Dann schliessen sich die Zugriffe auf einen anderen vhost aus, da der PHP-Prozess als NAECHSTERUSER:USERGRUPPE zugreift und weder besitzer- noch gruppenseitig berechtigt ist - alle Welt hat ja keine Rechte. Von PHP-Skripten geschriebene Dateien (wie Formular-Uploads etc.) müssen dann zwar vorerst doch noch 0644-Rechte haben, damit der Apache (und theoretisch der Rest der Welt auch) sofort auslesen darf; das nächtliche Skript korrigiert dann aber unbemerkt die Gruppe solcher Dateien auf www-data und setzt die Rechte auf die sicheren 0640 zurück. Der User sollte davon im Regelfall gar nichts mitbekommen.

Danke an KASE.

dbs
Beiträge: 8
Registriert: 30.09.2008 09:48:31

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von dbs » 07.10.2008 20:46:17

Hallo zusammen,

ich bekomme beim starten des Apachen immer folgende Fehlermeldung:

Code: Alles auswählen

dbs:/var/log/apache2# /etc/init.d/apache2 restart
Restarting web server: apache2Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 ... waiting .Warning: SuexecUserGroup directive requires SUEXEC wrapper.
.
Nach zwei Stunden googeln und doppelt und dreifach check der Konfiguration weiß ich nicht mehr weiter.
Das einzigste was mir höchst spanisch vorkommt ist, das ich scheinbar keine suexec Datei habe...

Code: Alles auswählen

dbs:/var/log/apache2# /usr/sbin/apache2 -V
Server version: Apache/2.2.9 (Debian)
Server built:   Oct  1 2008 14:34:07
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT=""
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"
Dort wo sie vermeintlicherweise liegen sollte liegt sie nicht...

Code: Alles auswählen

dbs:/var/log/apache2# ls -laR /usr/lib/apache2/
/usr/lib/apache2/:
total 20
drwxr-xr-x  3 root root  4096 Oct  7 20:31 .
drwxr-xr-x 31 root root 12288 Oct  7 17:40 ..
drwxr-xr-x  2 root root  4096 Oct  7 19:18 modules
..und woanders im System auch nicht?¿

Code: Alles auswählen

dbrandes:/var/log/apache2# find / -name *suexec*
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-enabled/suexec.load
/usr/lib/apache2/modules/mod_suexec.so
Hat jemand ne Idee was woran es liegen könnte?

Gruß dbs

mundaun
Beiträge: 29
Registriert: 13.10.2002 11:37:24
Wohnort: CH
Kontaktdaten:

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von mundaun » 09.10.2008 09:50:24

Du hast wohl kürzlich auf Ubuntu 8.10 aktualisiert? Ich hatte zumindest dasselbe Problem.

Tip: Immer schauen ob etwas neues in NEWS.Debian steht:

Code: Alles auswählen

$ zless /usr/share/doc/apache2/NEWS.Debian.gz
apache2 (2.2.8-5) unstable; urgency=low

* The suexec helper program needed for mod_suexec is now shipped in a
separate package, apache2-suexec, which is not installed by default.
You need to install this package manually if you are using mod_suexec.

There is now also the apache2-suexec-custom package, which contains a
customizable version of suexec which can be used with different document
roots than /var/www.
Lösung: Installier "apache2-suexec"

Benutzeravatar
RycoDePsyco
Beiträge: 15
Registriert: 09.01.2009 16:18:10

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von RycoDePsyco » 09.01.2009 16:29:17

Hallo, da in zwischen Jahre vergangen sind und sich einiges getan hat, wollte ich mal fragen ob jemand nochmals dieses HowTo neu mit aktuellen Programmen und aktuellem Wissen neu einstellen könnte??

Ich bin selber absoluter Anfänger und komme ab Punkt "User und Group Direktive nicht vergessen, sonst wird suexec nicht benutzt." nicht mehr weiter, weil ich nicht weis was ich hier machen soll.

Selber benutze ich VServer mit Debian 4 mit Confixx 3.3

Ich will da nicht unbedingt darauf bestehen, aber ich würde mich freuen, wenn es was gäbe das auch ein Neuling erfahren und lernen könnte.

Danke aber fürs lesen.


Antworten