(PHP 4, PHP 5)
system — Esegue un programma esterno e mostra l'output
$command
[, int &$return_var
] )
system() è semplicemente come la versione C
della funzione che esegue il
command
dato e restituisce in uscita il risultato. Se
viene fornita una variabile come secondo argomento, allora il codice di stato
ritornato dal comando eseguito verrà scritto in tale
variabile.
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.
La chiamata a system() tenta anche di ripulire automaticamente il buffer di output del web server dopo ogni linea di output se PHP gira come un modulo server.
Restituisce l'ultima linea del output del comando se ha successo e FALSE
se fallisce.
Se devi eseguire un comando ottenendo tutti i dati restituiti dal comando direttamente senza alcuna interferenza, usa la funzione passthru().
Example #1 system() example
<?php
echo '<pre>';
// Mette in output tutti i risultati della shellcommand "ls", e restituisce
// l'ultima linea di output nella $last_line. Memorizza il valore restituito
// del comando da shell in $retval.
$last_line = system('ls', $retval);
// Stampa informazioni aggiuntive
echo '
</pre>
<hr />L\'ultima linea dell\'output: ' . $last_line . '
<hr />Restituisce il valore: ' . $retval;
?>
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.
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 exec(), passthru(), popen(), escapeshellcmd(), pcntl_exec(), e l'operatore backtick.