Redemarrer Apache depuis PHP
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
Code:
exec('/etc/init.d/apache2 restart');
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.
J'ai donc cherché sur le web et j'ai trouvé une solution un peu barbare qui consiste a créer un .sh contenant :
Code:
/etc/init.d/apache2 restart
Définir ce .sh comme un fichier appartenant a root
Code:
chown root monscript.sh
Et donner la permission aux autres users de l'executer
Code:
chmod 4755 monscript.sh
Puis d'executer ce .sh depuis php
Code:
exec ('mon.sh',$out);
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:
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!
) |
Et si je vais voir dans les logs :
Code:
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 |
Quelqu'un peux me dire ou j'ai failli?
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 :)