Ah, das alte exec()
vs shell_exec()
vs passthru()
Frage.
sehen, welcher Befehl tatsächlich abgearbeitet wird, und das, was das System tatsächlich Rückkehr verwenden exec()
, und es ein int
und ein array
als 2. und 3. params jeweils passieren, var_dump()
sie dann beide nach dem Laufen der Befehl.
Zum Beispiel:
$cmd = "arp -a " . $ip;
$status = 0;
$return = [];
exec($cmd, $return, $status);
var_dump($status, $return);
die;
Wenn alles in Ordnung geht, dann sollte $status
Null und $return
können oder nicht leer sein können. Aber wenn $status
ist nicht null dann achten Sie darauf, was der Wert von $return
ist, wie dies sein wird, was Ihr System sagt Ihnen passiert, wenn es versucht, Ihren Befehl auszuführen.
Protip: Pass exec()
der vollständige Pfad-arp
as-in:
#> which arp
/usr/sbin/arp
$cmd = "/usr/sbin/arp -a" . $ip;
Auch bedenken Sie, je nachdem, wo der Befehl ausgeführt sein wird, REMOTE_ADDR
nützlich zurückkehren kann nichts. Es gibt mehrere andere Möglichkeiten, eine IP-Adresse zu erhalten, die besonders nützlich sind, wenn die IP-Adresse, die Sie benötigen, hinter einer Art Proxy steht.