phpbar.de logo

Mailinglisten-Archive

[php] PHP-Skript über system-Aufruf

[php] PHP-Skript über system-Aufruf

Eddi eddi at to-grip.de
Sam Jul 9 16:13:21 CEST 2005


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