Dans ce tutoriel nous allons voir comment exécuter une commande via le Shell à partir de PHP. Une petite recherche google vous démontrera que cette question intéresse pas mal de monde. Pourtant il existe une fonction PHP qui fait cela très bien : shell_exec.
Attention à ne pas faire n’importe quoi avec cette fonction ! Il est très important que vous relisiez vos script avant de les exécuter sous peine d’endommager votre système même si de mon expérience, j’ai constaté que les commandes les commandes qui requièrent les droits root ne sont pas exécutées.
Désactiver le safe_mode.
Pour les versions de PHP antérieures à PHP 5.3.0, il faut que le safe_mode soit désactivé. Cherchez dans votre php.ini (/etc/php5/apache2/php.ini pour Ubuntu) la ligne où il y safe_mode ou ajouter-la si elle n’existe pas.
safe_mode = Off
Redémarrez votre serveur Apache /etc/init.d/apche2 restart en tant que root et ce devrait être fonctionnel. Depuis PHP 5.3.0, cette fonctionnalité est obsolète.
Lancer une ou plusieurs commandes avec ou sans sortie.
Lancer une simple commande :
shell_exec("touch example.txt");
Si votre commande implique une sortie :
print shell_exec("ls example/");
ou encore mieux :
print "<pre>".shell_exec("ls example/")."</pre>";
Il est possible d’exécuter plusieurs commandes à la fois avec && ou en allant à la ligne :
print "<pre>".shell_exec("echo 'Test 1' > example1.txt && chmod 777 example1.txt")."</pre>";
print "<pre>".shell_exec("echo 'Test 1' > example1.txt > \n chmod 777 example1.txt")."</pre>";
print "<pre>".shell_exec("echo 'Test 1' > example1.txt >
chmod 777 example1.txt")."</pre>";
Lancer un script contenu dans un fichier.
Pour exécuter un script contenu dans un fichier, utilisez file_get_contents. Cette fonction permet de récupérer le contenu d’un fichier.
print "<pre>".shell_exec(file_get_contents("script.sh"))."</pre>";
Voilà c’est tout pour ce tuto, et n’oubliez surtout pas : BI-DOU-ILLEZ !
Source : Documentation PHP.