# Exécution d'un script .sh sous php

**URL:** <https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474 "2016-02-21T13:05:53Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![R11](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/3ec8ea/32.png) [@R11](https://www.debian-fr.org/u/R11)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/1 "2016-02-21T13:05:53Z")

</div>

Bien le bonjours / bonsoirs à tous

Voila cela fait maintenant un bon moment que j’utilise debian… qui est d’ailleurs super bien.

Mais voila un problème vient ce poser …  
Le soucis dans le titre :  
J’aimerai exécuter un script shell (.sh) sur un site web “PHP”

J’ai donc effectuer beaucoup beaucoup de recherche sans grand succès…  
J’ai tous de même trouver :  
[debian-fr.org/execution-scri … 29222.html](http://www.debian-fr.org/execution-script-sh-par-un-bouton-sur-une-page-web-t29222.html)

Mais voila aucune réponse officiel et pas toute à fait les bonne réponse…

C’est pas que j’essaye pas , c’est que j’ai beaucoup essayer mais rien ne marche…  
En surfant un peu sur la toile du web j’ai trouver plusieurs trucs :

[code]\<?php  
if(isset($\_POST))  
{  
if(isset($\_GET[‘action’]) && $\_GET[‘action’] == ‘yes’)  
{  
exec(’/home/css/copy.sh’, $output);  
print\_r($output);  
}  
}

echo ’

'; ?\>[/code]

En essayant de l’adaptant pour moi , cela ne fonctionne toujours pas

Je suis venu pour de l’aide merci d’avance pour vos futur réponse.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/2 "2016-02-21T13:05:53Z")

</div>

Salut,  
La section «&nbsp;Programmation&nbsp;» convient mieux à ta question, j’ai déplacé ton message.

Concernant ta question elle-même…

> [@R@pid0](#):
>
> rien ne marche…[/quote][quote=«&nbsp;R@pid0&nbsp;»]cela ne fonctionne toujours pas

Il y a des messages d’erreur, quelque chose à nous mettre sous la dent ? Avec aussi peu d’indices ça va être difficile de t’aider, d’autant que le code semble bon.

---

<div class="post-metadata">

**Author:** ![R11](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/3ec8ea/32.png) [@R11](https://www.debian-fr.org/u/R11)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/3 "2016-02-21T13:05:54Z")

</div>

Non actuellement aucune erreur à faire parvenir , étant donner que ce que je vous ai passez et belle est bien le code complet de la page web.

Sa fait un “Bouton” Suffit de cliquer dessus , mais rien ne ce passe. désoler.

J’aimerai vous en dire plus afin de vous faire comprendre mon problème mais j’ai expliquer au mieux :

Exécution d’un script shell avec php …

Je ne c’est comment y parvenir , merci d’avance

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/4 "2016-02-21T13:05:54Z")

</div>

Essaye déjà de rajouter les deux lignes suivantes au début de ton script PHP, avec un peu de chance ça permettra d’afficher des erreurs ou des avertissements concernant ce qui cloche :

`ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);`  
C’est très probablement une question de droits et/ou de configuration Apache/PHP, mais on navigue un peu à l’aveuglette là.

---

<div class="post-metadata">

**Author:** ![R11](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/3ec8ea/32.png) [@R11](https://www.debian-fr.org/u/R11)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/5 "2016-02-21T13:05:54Z")

</div>

Voila , j’ai fait ce que tu ma demander , mais rien n’y fait aucune erreur ne s’affiche …  
Ou c’est que je doit me déplacer quelque part ? dans un répertoire pour aller chercher les erreur ?

Voici le code au complet actuel pour le test :

[code]\<?php  
ini\_set(‘error\_reporting’, E\_ALL);  
ini\_set(‘display\_errors’, 1);

if(isset($\_POST[‘exec’]))  
{  
if(isset($\_GET[‘action’]) && $\_GET[‘action’] == ‘yes’)  
{  
$cmd = exec(escapeshellcmd(’/var/www/panel2/test.sh’));

```
if($cmd)
{
   echo 'Lancement Ok ';
}
else
{
   echo 'Le lancement du shell n\'a pas fonctionner';
}

```

}  
}

echo ’

'; ?\>[/code]

Bien entendu la réponse après l’exécution n’est autre que “Le lancement du shell n’a pas fonctionner”

Merci d’avance

EDIT :

Bon une bonne nouvelle comme une mauvaise…

Finalement , je ne c’est pas pourquoi , après avoir fait Executer la réponse est : Lancement Ok  
"BIEN"  
mais (toujours un mais)  
Rien ne se passe … alors que sous SSH je fait ./test.sh sa fonctionne…  
Juste pour information le code sh c’est :

`#!/bin/sh
echo "---------------------------------------------------------------------"
echo Reboot en cours
echo "---------------------------------------------------------------------"
reboot`

Le reboot fonctionne si je le fait directement sous SSH autrement sa marche pas , et je ne c’est pas pourquoi

merci d’avance

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/6 "2016-02-21T13:05:54Z")

</div>

[quote=“R@pid0”]Voila , j’ai fait ce que tu ma demander , mais rien n’y fait aucune erreur ne s’affiche …  
Ou c’est que je doit me déplacer quelque part ? dans un répertoire pour aller chercher les erreur ?[/quote]  
Les erreurs éventuelles se seraient affichées directement dans ton navigateur.

[quote=“R@pid0”]Rien ne se passe … alors que sous SSH je fait ./test.sh sa fonctionne…  
[…]  
Le reboot fonctionne si je le fait directement sous SSH autrement sa marche pas , et je ne c’est pas pourquoi[/quote]  
Là du coup c’est une bête question de droits :

- Apache et PHP s’exécutent avec les droits de l’utilisateur www-data (de mémoire), et donc ton script [test.sh](http://test.sh) également.
- Or, il faut les droits root pour rebooter la machine.

Partant de là, il faut trouver un moyen pour autoriser l’utilisateur www-data à exécuter la commande reboot avec les droits root.  
Sur Linux, ça peut se faire facilement en utilisant sudo ou super (au choix) après l’avoir correctement configuré. sudo est plus souple, super est plus facile à configurer… À toi de voir, je te laisse te documenter.

Edit : s/apache/www-data/ 😊

---

<div class="post-metadata">

**Author:** ![R11](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/3ec8ea/32.png) [@R11](https://www.debian-fr.org/u/R11)\
**Post date:** [Février 21, 2016, 1:05 UTC](https://www.debian-fr.org/t/execution-dun-script-sh-sous-php/54474/7 "2016-02-21T13:05:54Z")

</div>

Faut dire que les résultat commence à être concluant … que dire d’autre …

Hum un bon merci pour tes réponse rapide ( très rapide … ) et à bientôt dans ce cas 🙂

Merci à toi cher ami ^^
