(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Esegue un programma esterno
exec() esegue il
command
passato.
command
Il comando che verrà eseguito.
output
Se l'argomento output
è presente, allora l'
array specificato verrà riempito con ogni linea del output del
comando. I fine riga, come \n
, non sono
inclusi in questo array. Notare che se l'array contiene già degli
elementi, exec() li aggiungerà in coda all'array.
Se non si vuole che la funzione aggiunga elementi, eseguire un
unset() sull'array prima di passarlo ad
exec().
return_var
Se viene passato l'argomento return_var
assieme all'argomento output
, allora lo
stato di ritorno del comando eseguito verrà scritto in questa
variabile.
L'ultima riga dal risultato del comando. Se si ha bisogno di eseguire un comando ed ottenere tutti i dati dello stesso direttamente senza alcuna interferenza, usare la funzione passthru().
Per ottenere l'output del comando eseguito, assicurarsi di impostare ed utilizzare il
parametro output
.
Example #1 Un esempio di exec()
<?php
// restituisce lo username del proprietario del processo php/httpd in esecuzione
// (su un sistema con l'eseguibile "whoami" nel path)
echo exec('whoami');
?>
Se si permette di passare a questa funzione i dati provenineti dagli input utente, si dovrebbe utilizzare la funzione escapeshellarg() oppure escapeshellcmd() in modo da essere sicuri che gli utenti non possano compromettere il sistema eseguendo comandi arbitrari.
Nota:
Se si avvia un programma con questa funzione e si vuole lasciarlo in esecuzione in background, ci si deve accertare che l'output del programma venga redirezionato verso un file o qualche altro stream di output, altrimenti PHP si fermerà finché l'esecuzione del programma sarà terminata.
Nota:
On Windows exec() will first start cmd.exe to launch the command. If you want to start an external program without starting cmd.exe use proc_open() with the
bypass_shell
option set.