Mailinglisten-Archive |
Hallo Stephan, Stephan Beck schrieb: > Hallo, > ich versuche ein PHP-Skript über folgenden system-call parallel zum Laufen zu bringen. > > if (!system("php /export/internet/shell_export.php session=" . session_id())) { > $logger->debug("Export->Internet: Shell-Export konnte nicht korrekt gestartet werden."); > exit(); > } > > Der Aufruf klappt über Konsole wunderbar. > Sobald das Skript jedoch über PHP gestartet werden soll, passiert gar nichts. > Es kommt keinerlei Fehlermeldung, auch nicht im Apache-log, aber das Skript wird nicht abgearbeitet. > Die Ausführung eines normalen system-calls, wie system("dir"); funktioniert problemlos. > > Wo kann das Problem liegen? Gerade habe ich ein wenig rumgerätselt, warum es überhaupt funktioniert, da ich php immer mit... $ php -f <file> [--] [args...] ...anspreche. Es ist aber auch möglich... $ php [options] [-f] <file> [--] [args...] ... das Argument -f nicht zu verwenden. Da ist dann Raten angesagt: 1.) Der Apache hat per Konfiguration die möglichkeit die Systemvariable PATH, die die Verzeichnisse der aufführbaren Binäre enthält, anzu- passen. Im Sript sollte also der genau Pfad zum Binär angegeben werden. (Bei einer Standardinstallation ist dies /usr/local/bin/php.) 2.) Der Apache kann per Konfiguration das Starten von weiteren Prozessen mittels RLimitNPROC ganz unterbinden http://httpd.apache.org/docs-2.0/mod/core.html#rlimitnproc 3.) PHP kann per safe_mode die Ausführung von system() und Geschwistern unterbinden. Nur bei dieser Variante sollte tatsächlich eine Fehler- meldung erscheinen. Gruß aus Berlin! eddi
php::bar PHP Wiki - Listenarchive