
Con l’ausilio dell’ istruzione exec() e’ possibile far eseguire dei comandi o degli script nella shell del server in cui sta girando PHP. L’utente con cui verranno eseguiti i comandi o gli script sara’ chiaramente l’utente web di default cioe’ wwwdata, pertanto i permessi di esecuzione lettura e scrittura sul disco saranno giustamente limitati. Siccome il PHP e’ un linguaggio interpretato che lavora lato server e’ chiaro che tutti i comandi lanciati tramite la pagina web, eseguiranno le operazioni lato server e non lato client. vediamo un semplice esempio di come funziona il comando.
<?php
exec("ls", $output, $result);
?>
Il codice sopra non ritornera’ nulla sulla pagina eseguita! infatti i dati in uscita dal comando ‘ls’ saranno memorizzati nel array $output, mentre nella variabile $result sara’ contenuto 1 se il comando ha restituito un errore o non ha restituito nulla, 0 se il comando e’ stato eseguito correttamente.
Andiamo ora a stampare a video il risultato del comando ls:
<?php
exec("ls", $output, $result);
if(!$result){
echo "stampo l'output di ls:<br>";
for($i=0; $i < count($output); $i++){
echo $output[$i]."<br>";
}
}
?>
questo sara’ il risultato :

Possiamo vedere i due file presenti nella directory di esecuzione del comando, se volessimo sapere quali file sono presenti nella directory radice, e’ sufficiente sostituire “ls” con “ls ../../”
Conoscendo la potenza della shell e dei sui script e’ possibile fare qualsiasi cosa sul server, direttamente non puo’ creare, modificare o cancellare file ma attraverso degli appositi script e’ possibile fare molti danni, come la cancellazione di file o di intere directory!