(PHP 4, PHP 5, PHP 7, PHP 8)
system — Esegue un programma esterno e mostra l'output
system() è proprio come la versione C della
funzione in quanto esegue il comando
command
dato e restituisce il risultato.
La chiamata a system() prova anche a svuotare automaticamente il buffer di output del web server dopo ogni linea di output se PHP è in esecuzione come modulo server.
Se è necessario eseguire un comando ottenendo direttamente tutti i dati restituiti dallo stesso senza alcuna interferenza, usare la funzione passthru().
command
Il comando che verrà eseguito.
return_var
Se viene passato l'argomento return_var
allora lo
stato di ritorno del comando eseguito verrà scritto in questa
variabile.
Restituisce l'ultima riga dell'output del comando in caso di successo e false
in caso di fallimento.
Example #1 Esempio di system()
<?php
echo '<pre>';
// Mette nell'output tutti i risultati del comando da shell "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 />Valore di ritorno: ' . $retval;
?>
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.