Forum und email

system

(PHP 4, PHP 5)

system — Esegue un programma esterno e mostra l'output

Descrizione

string system ( string $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.

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.

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.

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 exec(), passthru(), popen(), escapeshellcmd(), pcntl_exec(), e l'operatore backtick.