Forum und email

exec

(PHP 4, PHP 5)

exec — Esegue un programma esterno

Descrizione

string exec ( string $command [, array &$output [, int &$return_var ]] )

exec() esegue il comando passato da command , la funzione non invia nessun output. Restituisce semplicemente l'ultima linea dal risultato del comando. Se si ha bisogno di eseguire un comando ed avere tutti i dati passati direttamente indietro senza alcuna interferenza, usare la funzione passthru().

Se l'argomento output è presente, allora tale vettore specificato verrà riempito con ogni linea del output del comando. I fine riga, come \nnon sono inclusi in questo array. Notare che se il vettore contiene già degli elementi, exec() li aggiungerà in coda al vettore. Se non si vuole che la funzione aggiunga elementi, eseguire un unset() sul vettore prima di passarlo ad exec().

Se viene passato l'argomento return_var assieme all'argomento output , allora lo stato del comando eseguito verrà scritto in questa variabile.

Example#1 Un exec() example

<?php
 
// restituisce la username del proprietario del processo php/httpd attivo
 // (su um sistema con l'eseguibile "whoami" nel path)
 
echo exec('whoami');
 
?>

Avviso

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: Quando si abilita la modalità sicura, si può eseguire soltanto gli eseguibili presenti nella directory safe_mode_exec_dir. Per motivi pratici, attualmente, non è permesso avere .. come componente del percorso di un eseguibile.

Avviso

Con la modalità sicura attivata, tutte le parole che seguono il comando iniziale sono trattate come argomenti. Quindi, echo y | echo x diventa echo "y | echo x".

Vedere anche system(), passthru(), popen(), escapeshellcmd() pcntl_exec() e l'operatore backtick.