phpbar.de logo

Mailinglisten-Archive

[PHP] exec() sytem() startet nicht jedes Programm - Warum?

[PHP] exec() sytem() startet nicht jedes Programm - Warum?

Gloss Mathias php_(at)_phpcenter.de
Tue, 21 May 2002 13:59:40 +0200


Hiho,

> Von: 	Alexander Saupe[SMTP:a.saupe_(at)_epvtec.de]
>
> 2. aber ich kann z.B. nicht den kill PID Befehl ausführen (keine
> Rückmeldung
> und killen tut er den entsprechenden Prozeß PID auch nicht - habe vorher
> die
> PID des abzuschießenden Programms ausgelesen)
>
Killen kann nur der Owner des Prozesses oder root.


> mldonkey > mldonkey.log &
> (so schreibe ich das sonst in die Konsole und Linux startet mldonkey im
> Hintergrund)
>
> die Ausgabe von dir bringt folgendes:
>  -rwxrwxrwx    1 10575    21129     1052648 M?r 13 16:31 mldonkey
> (also die Rechte sind so gesetzt das mldonkey jeder ausführen kann)
>
das ist unbedeutend für das Killen.

> zum testen habe ich die Rechte des Apache auf users gesetzt (in der
> httpd.conf)
>
das auch.

Du mußt den mldonkey unter dem User starten, unter dem der Webserver
läuft, sonst kann der Webserver net den Prozess killen (Außer der Webserver
läuft als root, aber das solltest du wirklich! nicht tun ;)

> Im Netz hab ich noch das (http://www.php.net/manual/en/ref.exec.php) hier
> gefunden und ausprobiert (auch wenn ich nichts davon verstanden habe):
> exec("php script.php parameters 2>dev/null >&- <&-
> >/dev/null &");
>
hm so kompliziert brauchstes gar net ....

Normal sollte ein exec('kill <Prozeß-ID>') reichen, wenn das zu killende
Programm unterm gleichen User läuft. Wenns nur ein Programm gibt mit
dem Namen, tut auch exec('killall mldonkey');

> Vor allen Dingen hab ich keinen Blassen was stdin oder stdout sein soll.
>
STDIN ist die Standardeingabe, also z.B. die Tastatur bei einem normalen
Programm.
STDOUT ist z.b. bei einem CGI-Programm die Ausgabe, die über den Webserver
an den Client geschickt wird. Oder bei deinem Beispiel oben mldonkey >
mldonkey.log &
das, was du mit > mldonkey.log in die Datei mldonkey.log umleitest.
Daneben gibts auch noch STDERR, die Standardfehlerausgabe... die kannst du
z.B.
mit
mldonkey > mldonkey.log 2> mldonkey.err &
in die Datei mldonkey.err schicken.

Grüße, Mathias


php::bar PHP Wiki   -   Listenarchive