Ah, le vieux exec()
vs vs shell_exec()
passthru()
question.
Pour voir ce que la commande est en fait en cours d'exécution, et ce que le système est en fait retour, utilisez exec()
, et le faire passer une int
et un array
comme ses 2e et 3e params respectivement, puis les var_dump()
à la fois après l'exécution la commande.
Par exemple:
$cmd = "arp -a " . $ip;
$status = 0;
$return = [];
exec($cmd, $return, $status);
var_dump($status, $return);
die;
Si tout est bien passé, alors $status
doit être nul et $return
peut ou ne peut pas être vide. Cependant, si $status
est non nul alors faites attention à la valeur de $return
, car ce sera ce que votre système vous dit quand il essaie d'exécuter votre commande.
Protip: Pass exec()
le chemin complet-arp
comme dans:
#> which arp
/usr/sbin/arp
$cmd = "/usr/sbin/arp -a" . $ip;
Aussi, gardez à l'esprit, selon l'endroit où la commande est en cours d'exécution, REMOTE_ADDR
ne peut pas retourner quelque chose d'utile. Il existe plusieurs autres façons d'obtenir une adresse IP, qui sont particulièrement utiles si l'adresse IP dont vous avez besoin est derrière une sorte de proxy.