Guten Morgen!
Auf einem
neu aufgesetzten Linux Server (nicht von mir aber auch nicht bei einem berufsmäßigen Hoster) mit Apache gibt es folgendes Problem:
- Script A in Verzeichnis V1 ruft in einem fork() Kindzweig per exec() Script B in Verzeichnis V2 auf
- Script B sollte in einer Logdatei in Verzeichnis V3 etwas schreiben, tut es aber nicht; ebenfalls keine Ausgaben im error.log
- V1 ist das öffentliche /cgi-bin, V2 ein nicht öffentliches Scripte Verzeichnis und V3 ein nicht öffentliches Datenverzeichnis
- startet man in der Shell mit dem User des Webservers über sudo -u wwwuser scriptb.pl das Script B auf die selbe Art und Weise wie im exec(), läuft alles wie erwartet, Script B scheint also in Ordnung zu sein
- setzt man in Script A in das exec() den Aufruf eines Testscripts C in Verzeichnis V2 läuft auch alles wie erwartet, exec() in Script A scheint also grundsätzlich zu tun, was es soll und die Pfade stimmen
- nur die Kombination A mit B klappt nicht
- das fork() in Script A liefert in allen Fällen eine PID
- eine Abfrage der Prozesse mit ps bringt als Ergebnis, dass der gesuchte Prozess nicht läuft, daher ist unbekannt, ob Script B nie gestartet oder aus einem unbekannten Grund sofort wieder beendet wurde
- Berechtigungen (chmod=-rwxr-xr-x oder 0755) sowie Besitz (chown=der FTP-User) sind für alle drei Scripte identisch
- V1 und V2 sind im Apache ausführbar, Schreibberechtigung in V3 besteht
- auf das oben beschriebene Verhalten nimmt übrigens keinen Einfluss, ob STDIN, STDOUT und STDERR im Kindzweig von Script A vor dem exec() geschlossen werden oder nicht
Was kann ich noch tun, um die Ursache zu finden, warum A mit B nicht kann?
10 print "Hallo"
20 goto 10