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