fehler beim starten von lighttpd + mod_fastcgi

binford3000.de

Neuer User
Mitglied seit
5 Sep 2009
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Moin,

ich versuche gerade lighttpd zum laufen zu bekommen. Ohne mod_fastcgi läuft auch alles ganz prima. Mit mod_fastcgi kommt folgende Fehlermeldung wenn ich lighttpd von der Konsole aus starte:

Code:
/var/mod/root # /etc/init.d/rc.lighttpd 
Looking for group 'wwwrun' ... found
Looking for user 'wwwrun' ... found
Starting lighttpd web server ...cp: cannot stat '//tmp/flash/php.ini': No such file or directory
cp: cannot stat '//tmp/flash/php': No such file or directory
done.

Ich hab das init-script durchforstet, aber keinen Aufruf von "cp" finden können. Meine Vermutung ist, dass da ein slash zuviel ist. Ich nutze die Standardkonfiguration von lighttpd. Google und Boardsuche hab ich bemüht, aber nichts gefunden. Für irgendeinen Tipp wäre ich dankbar.

--
binford3000
 
Starte das Skript mal so:
Code:
sh -x /etc/init.d/rc.lighttpd start

Der Fehler ist vermutlich bei der Erstellung der Konfigurationsdatei.

Im Gegensatz zu Windows stört ist Linux übrigens nicht an überzähligen Slashes.
 
Das ist der output von "sh -x /etc/init.d/rc.lighttpd start". Danach hab ich keinen lighttpd-Prozess (der heisst doch auch "lighttpd", oder?).

Ich geh übrigens davon aus das die php.ini irgendwie erzeugt wird, oder muss ich die selber in /tmp/flash anlegen?

Code:
/var/mod/root # sh -x /etc/init.d/rc.lighttpd start
+ DAEMON=lighttpd
+ DAEMON_LONG_NAME=lighttpd web server
+ . /etc/init.d/modlibrc
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
+ export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
+ [ -n lighttpd ]
+ [ ! -r /mod/etc/conf/lighttpd.cfg ]
+ modlib_loadconfig
+ local CONF_FILE=/mod/etc/conf/lighttpd.cfg
+ [ -r /mod/etc/conf/lighttpd.cfg ]
+ . /mod/etc/conf/lighttpd.cfg
+ export LIGHTTPD_AUTH=no
+ export LIGHTTPD_AUTHMETH=digest
+ export LIGHTTPD_CHROOT=yes
+ export LIGHTTPD_DIRLISTING=enable
+ export LIGHTTPD_DIRLISTINGENC=utf-8
+ export LIGHTTPD_DIRLISTINGVIRT=
+ export LIGHTTPD_DOCROOT=/var/media/ftp/uStor01/lighttpd
+ export LIGHTTPD_ENABLED=yes
+ export LIGHTTPD_ERROR=no
+ export LIGHTTPD_ERRORFILE=/error-handler.html
+ export LIGHTTPD_ERRORVIRT=
+ export LIGHTTPD_LIMITCONN=0
+ export LIGHTTPD_LIMITSRV=0
+ export LIGHTTPD_LIMITVIRT=
+ export LIGHTTPD_LOGGING=yes
+ export LIGHTTPD_LOGGING_ACCESS=/var/log/lighttpd/access.log
+ export LIGHTTPD_LOGGING_ACCESS_FILE=yes
+ export LIGHTTPD_LOGGING_ERROR=/var/log/lighttpd/error.log
+ export LIGHTTPD_LOGGING_ERROR_FILE=yes
+ export LIGHTTPD_MODCGI=no
+ export LIGHTTPD_MODCGIVIRT=
+ export LIGHTTPD_MODCOMPRESS=no
+ export LIGHTTPD_MODCOMPRESSDIR=/var/www/compress/
+ export LIGHTTPD_MODCOMPRESSVIRT=
+ export LIGHTTPD_MODFASTCGIPHP=yes
+ export LIGHTTPD_MODFASTCGIPHPMAXPROC=3
+ export LIGHTTPD_MODFASTCGIPHPPATH=/usr/bin/php-cgi
+ export LIGHTTPD_MODFASTCGIPHPVIRT=
+ export LIGHTTPD_MODFASTCGIRUBY=no
+ export LIGHTTPD_MODFASTCGIRUBYMAXPROC=3
+ export LIGHTTPD_MODFASTCGIRUBYPATH=
+ export LIGHTTPD_MODFASTCGIRUBYVIRT=
+ export LIGHTTPD_MODSTATUS=no
+ export LIGHTTPD_MODSTATUSCONFIG=/server-config
+ export LIGHTTPD_MODSTATUSSORT=disable
+ export LIGHTTPD_MODSTATUSSTATISTIC=/server-statistics
+ export LIGHTTPD_MODSTATUSSTATUS=/server-status
+ export LIGHTTPD_MODSTATUSVIRT=
+ export LIGHTTPD_PORT=8008
+ export LIGHTTPD_SSLADDITIONAL=no
+ export LIGHTTPD_SSLENABLE=disable
+ export LIGHTTPD_SSLPORT=443
+ export LIGHTTPD_SSLREDIRECT=no
+ export LIGHTTPD_SSLVIRT=
+ export LIGHTTPD_VIRTHOST=no
+ export LIGHTTPD_VIRTHOSTTYPE=%3.%0
+ start
+ echo -n Starting lighttpd web server ...
Starting lighttpd web server ...+ modlib_check_running
+ local fn=/var/run/lighttpd.pid
+ [ ! -s /var/run/lighttpd.pid ]
+ return 1
+ checkdir /var/media/ftp/uStor01/lighttpd
+ i=10
+ [ ! -d /var/media/ftp/uStor01/lighttpd ]
+ configure
+ cleanup
+ cleanup_always
+ modunreg status lighttpd lighttpd-log
+ rm -rf /var/log/lighttpd/
+ rm -f /mod/etc/lighttpd/lighttpd.conf
+ mkdir -p /mod/etc/lighttpd
+ [ -x /tmp/flash/lighttpd_conf ]
+ /mod/etc/default.lighttpd/lighttpd_conf
cp: cannot stat '//tmp/flash/php.ini': No such file or directory
cp: cannot stat '//tmp/flash/php': No such file or directory
+ [ -r /tmp/flash/lighttpd.extra ]
+ status_log
+ [ yes = yes ]
+ [ yes = yes ]
+ modreg status lighttpd lighttpd-log lighttpd/lighttpd-log
+ LD_PRELOAD=
+ modlib_startdaemon lighttpd -f /mod/etc/lighttpd/lighttpd.conf
+ env - PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin lighttpd -f /mod/etc/lighttpd/lighttpd.conf
+ exitval=0
+ [ 0 -eq 0 ]
+ echo done.
done.
+ exit 0
 
[Edit frank_m24: Sinnfreies Vollzitat vom Beitrag direkt darüber gelöscht, siehe Forumregeln.]

Falls du mit Hauptverzeichniß DOCROOT meinst – falsch geraten:

Code:
+ export LIGHTTPD_DOCROOT=/var/media/ftp/uStor01/lighttpd

Achso, sollte ich vieleicht noch erwähnen: Ich nutze freetz-trunk.
 
Dann existieren die Quelldateien /tmp/flash/php.ini und /tmp/flash/php nicht. Das scheint auch weiter kein Problem zu sein, zumindest wird lighttpd gestartet und meldet keinen Fehler.
Läuft er denn?
 
Nein. Zumindest finde ich keine Prozess namens lighttpd.
 
Ehm, wenn du PHP willst, solltest du PHP auch bei make menuconfig angeben. PHP kommt nicht automatisch mit lighttpd dazu. mod_fastcgi stellt nur die Verbindung zu PHP her. Die php.ini kommt vom PHP Paket. ;-)

Lass mich raten, das Konfigfrontend hat dir auch gesagt, dass es das php-cgi nicht finden kann, oder?

UPDATE: einen Fehler gab es früher beim PHP Paket: die /etc/init.d/rc.php hatte kein x-Bit. Ist dies bei dir der Fall? Dieses Startskript erzeugt die php.ini.

Ciao
Stephan
 
Zuletzt bearbeitet:
Wieder falsch geraten. PHP ist drauf und wird gefunden. Das execute-bit ist gesetzt:
Code:
/etc/init.d # ls rc.php -lah
-rwxr-xr-x    1 root     root          804 Sep 13 15:57 rc.php

Ich hab allerdings gerade entdeckt das man php "starten" muss. Für jemanden der aus der nicht-embedded Welt kommt etwas ungewöhnlich. Danach kam die Fehlermeldung nicht mehr. Laufen tut lighttpd trotzdem nicht. Ich hab keinen Prozess. In der syslog steht nichts relevantes.

Code:
/etc/init.d # sh -x rc.lighttpd 
+ DAEMON=lighttpd
+ DAEMON_LONG_NAME=lighttpd web server
+ . /etc/init.d/modlibrc
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
+ export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
+ [ -n lighttpd ]
+ [ ! -r /mod/etc/conf/lighttpd.cfg ]
+ modlib_loadconfig
+ local CONF_FILE=/mod/etc/conf/lighttpd.cfg
+ [ -r /mod/etc/conf/lighttpd.cfg ]
+ . /mod/etc/conf/lighttpd.cfg
+ export LIGHTTPD_AUTH=no
+ export LIGHTTPD_AUTHMETH=digest
+ export LIGHTTPD_CHROOT=yes
+ export LIGHTTPD_DIRLISTING=enable
+ export LIGHTTPD_DIRLISTINGENC=utf-8
+ export LIGHTTPD_DIRLISTINGVIRT=
+ export LIGHTTPD_DOCROOT=/var/media/ftp/uStor01/lighttpd
+ export LIGHTTPD_ENABLED=yes
+ export LIGHTTPD_ERROR=no
+ export LIGHTTPD_ERRORFILE=/error-handler.html
+ export LIGHTTPD_ERRORVIRT=
+ export LIGHTTPD_LIMITCONN=0
+ export LIGHTTPD_LIMITSRV=0
+ export LIGHTTPD_LIMITVIRT=
+ export LIGHTTPD_LOGGING=yes
+ export LIGHTTPD_LOGGING_ACCESS=/var/log/lighttpd/access.log
+ export LIGHTTPD_LOGGING_ACCESS_FILE=yes
+ export LIGHTTPD_LOGGING_ERROR=/var/log/lighttpd/error.log
+ export LIGHTTPD_LOGGING_ERROR_FILE=yes
+ export LIGHTTPD_MODCGI=no
+ export LIGHTTPD_MODCGIVIRT=
+ export LIGHTTPD_MODCOMPRESS=no
+ export LIGHTTPD_MODCOMPRESSDIR=/var/www/compress/
+ export LIGHTTPD_MODCOMPRESSVIRT=
+ export LIGHTTPD_MODFASTCGIPHP=yes
+ export LIGHTTPD_MODFASTCGIPHPMAXPROC=3
+ export LIGHTTPD_MODFASTCGIPHPPATH=/usr/bin/php-cgi
+ export LIGHTTPD_MODFASTCGIPHPVIRT=
+ export LIGHTTPD_MODFASTCGIRUBY=no
+ export LIGHTTPD_MODFASTCGIRUBYMAXPROC=3
+ export LIGHTTPD_MODFASTCGIRUBYPATH=
+ export LIGHTTPD_MODFASTCGIRUBYVIRT=
+ export LIGHTTPD_MODSTATUS=no
+ export LIGHTTPD_MODSTATUSCONFIG=/server-config
+ export LIGHTTPD_MODSTATUSSORT=disable
+ export LIGHTTPD_MODSTATUSSTATISTIC=/server-statistics
+ export LIGHTTPD_MODSTATUSSTATUS=/server-status
+ export LIGHTTPD_MODSTATUSVIRT=
+ export LIGHTTPD_PORT=8008
+ export LIGHTTPD_SSLADDITIONAL=no
+ export LIGHTTPD_SSLENABLE=disable
+ export LIGHTTPD_SSLPORT=443
+ export LIGHTTPD_SSLREDIRECT=no
+ export LIGHTTPD_SSLVIRT=
+ export LIGHTTPD_VIRTHOST=no
+ export LIGHTTPD_VIRTHOSTTYPE=%3.%0
+ pre_config
+ modlib_addgroup wwwrun
+ local group=wwwrun
+ shift
+ echo -n Looking for group 'wwwrun' ... 
Looking for group 'wwwrun' ... + grep -q ^wwwrun: /etc/group
+ echo found
found
+ modlib_adduser wwwrun -G wwwrun -s /bin/false -H -D -g lighttpd account
+ local user=wwwrun
+ shift
+ echo -n Looking for user 'wwwrun' ... 
Looking for user 'wwwrun' ... + grep -q ^wwwrun: /etc/passwd
+ echo found
found
+ return 0
+ modreg cgi lighttpd lighttpd
+ strings /usr/bin/lighttpd
+ grep -q + SSL Support
+ [ -f /usr/lib/lighttpd/mod_auth.so ]
+ deffile=/mod/etc/default.lighttpd/lighttpd_user.def
+ [ -r /tmp/flash/lighttpd_user.def ]
+ modreg file lighttpd_user lighttpd: Accounts 0 /mod/etc/default.lighttpd/lighttpd_user.def
+ deffile=/mod/etc/default.lighttpd/lighttpd_rights.def
+ [ -r /tmp/flash/lighttpd_rights.def ]
+ modreg file lighttpd_rights lighttpd: Rights 0 /mod/etc/default.lighttpd/lighttpd_rights.def
+ deffile=/mod/etc/default.lighttpd/lighttpd_add.def
+ [ -r /tmp/flash/lighttpd_add.def ]
+ modreg file lighttpd_add lighttpd: Additional 0 /mod/etc/default.lighttpd/lighttpd_add.def
+ [ yes != yes ]
+ start
+ echo -n Starting lighttpd web server ...
Starting lighttpd web server ...+ modlib_check_running
+ local fn=/var/run/lighttpd.pid
+ [ ! -s /var/run/lighttpd.pid ]
+ return 1
+ checkdir /var/media/ftp/uStor01/lighttpd
+ i=10
+ [ ! -d /var/media/ftp/uStor01/lighttpd ]
+ configure
+ cleanup
+ cleanup_always
+ modunreg status lighttpd lighttpd-log
+ rm -rf /var/log/lighttpd/
+ rm -f /mod/etc/lighttpd/lighttpd.conf
+ mkdir -p /mod/etc/lighttpd
+ [ -x /tmp/flash/lighttpd_conf ]
+ /mod/etc/default.lighttpd/lighttpd_conf
+ [ -r /tmp/flash/lighttpd.extra ]
+ status_log
+ [ yes = yes ]
+ [ yes = yes ]
+ modreg status lighttpd lighttpd-log lighttpd/lighttpd-log
+ LD_PRELOAD=
+ modlib_startdaemon lighttpd -f /mod/etc/lighttpd/lighttpd.conf
+ env - PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin lighttpd -f /mod/etc/lighttpd/lighttpd.conf
+ exitval=0
+ [ 0 -eq 0 ]
+ echo done.
done.
+ exit 0
 
Dann mach mal ein Image, das Replace Kernel aktiv hat. Wähle dazu ggf. eine Firmware-Version aus, wo das funktioniert. Wähle außerdem noch das Programm strace aus.

Danach erstellst Du die Konfigurationsdateien und startest anschließend

Code:
/etc/init.d/rc.php start
/etc/init.d/rc.lighttpd start
strace -f -o [B]/tmp/strace.txt[/B] lighttpd -f /mod/etc/lighttpd/lighttpd.conf
Wenn es zu einem Reboot kommt dabei, dann wird die Ausgabe zu groß, und dann solltest Du statt /tmp/strace.txt einen Pfad auf einem USB-Datenträger nehmen.

Diese Ausgabedatei kannst Du hier mal anhängen.
 
Damit geht replace kernel...

MfG Oliver
 
@olistudent: ok, danke für die info.

Danach erstellst Du die Konfigurationsdateien(...)
Ich bin leider etwas schwer von Begriff. Welche Konfigurationsdateien meinst du? Die php.ini? Gibts es da keine default config, wie bei "normalen" Linux distros?


[EDIT]
Anbei findet ihr die Ausgabe von strace.
 

Anhänge

  • strace.txt
    105.4 KB · Aufrufe: 10
Zuletzt bearbeitet:
Welche Konfigurationsdateien meinst du? Die php.ini? Gibts es da keine default config, wie bei "normalen" Linux distros?

Genau, die php.ini. Diese wird mit "/etc/init.d/rc.php start" erstellt. Aus dem strace ergibt sich, daß /etc/init.d/rc.php nicht existiert und daher nicht ausgeführt werden kann. Diese "default config" muß im RAM erstellt werden, denn im ROM wäre sie nicht nur default, sondern auch nicht veränderbar.

Fürs erste folgende Tips:
- Funktioniert es ohne chroot?
- Funktioniert es ohne PHP?
 
* Ohne chroot und mit PHP funktioniert es.
* Mit chroot und ohne PHP funktioniert es auch.

Wie oben schon erwähnt existiert rc.php
Code:
/etc/init.d # ls rc.php -lah
-rwxr-xr-x    1 root     root          804 Sep 13 15:57 rc.php
 
Das war ein Tippfehler oben, ich wollte schreiben, daß die Datei /usr/bin/php-cgi nicht existiert und daher nicht ausgeführt werden kann. Und zwar konkret existiert sie nicht innerhalb der chroot Umgebung.
 
Ok. Das macht Sinn. Ich hab php-cgi in den chroot kopiert und denn Pfad relativ zum chroot gesetzt. Komischerweise ist aus dem strace log ersichtlich, das weiterhin /usr/bin/php-cgi aufgerufen wird, was dann natürlich fehlschlägt.

Ich schau mir das morgen nochmal in Ruhe an. Ich muss – soweit ich das richtig verstanden hab – ja ohnehin erstmal noch ein neues image mit ldd machen.

[EDIT]
Egal was ich als Pfad zur php-cgi eingebe, es will nicht funktionieren. Mir scheint das das chrooten auf meine USB festplatte schon fehlschlägt. Das Verzeichnis "/var/media/ftp/uStor01/lighttpd" existiert ganz bestimmt.

Code:
1839  chdir("/var/media/ftp/uStor01/lighttpd") = -1 ENOENT (No such file or directory)
1839  write(3, "2009-09-20 10:19:32: (mod_fastcgi"..., 123) = -1 EBADF (Bad file descriptor)
1839  execve("/var/media/ftp/uStor01/lighttpd/php-cgi", ["/var/media/ftp/uStor01/lighttpd/"...], [/* 183 vars */]) = -1 ENOENT (No such file or directory)
 
Zuletzt bearbeitet:
Ich hatte mal ein seltsames Verhalten als die Rechte für /lib nicht richtig gesetzt waren. Wie sind die denn bei dir?

MfG Oliver
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,004
Beiträge
2,244,320
Mitglieder
373,392
Neuestes Mitglied
lukaskr07
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.