Bonjour,
Tous d'abord, je vous pris de bien vouloir m'excuser si je poste dans la mauvaise catégorie, je n'en ai pas trouvée qui s'approche de mon problème.
Dans le cadre d'un gestionnaire de Projet que j'écris en PHP, j'execute depuis celui ci plusieurs commandes pour créer des svn, configurer leurs accès et leurs liens avec apache.
Tout se passe bien jusqu'au moment ou je dois redémarrer apache pour que celui ci prennent les modifications en compte, un simple
pose des problèmes de droits car c'est l'user www-data qui exécute la commande et celui ci n'a pas la permission de s'auto tuer/relancer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec('/etc/init.d/apache2 restart');
J'ai donc cherché sur le web et j'ai trouvé une solution un peu barbare qui consiste a créer un .sh contenant :
Définir ce .sh comme un fichier appartenant a root
Code : Sélectionner tout - Visualiser dans une fenêtre à part /etc/init.d/apache2 restart
Et donner la permission aux autres users de l'executer
Code : Sélectionner tout - Visualiser dans une fenêtre à part chown root monscript.sh
Puis d'executer ce .sh depuis php
Code : Sélectionner tout - Visualiser dans une fenêtre à part chmod 4755 monscript.sh
Dans la logique ça me paraissait bon, mais visiblement je n'ai pas la même logique que nunux puisque lorsque j'execute mon php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec ('mon.sh',$out);
Et si je vais voir dans les logs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Array ( [0] => * Restarting web server apache2 [1] => Action 'start' failed. [2] => The Apache error log may have more information. [3] => ...fail! )
Quelqu'un peux me dire ou j'ai failli?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs
Amicalement,
nb : Je sais pertinemment que tenter d'attribuer une commande pareille à PHP n'est pas sans risques, ceci est installé sur un serveur de dev non sensible et disponible uniquement sur mon réseau local, cela dis si vous connaissez une solution "plus propre" et facile a mettre en place (pour un utilisateur "basique voir novice" de linux que je suis) je suis tout ouie
Partager