IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redemarrer Apache depuis PHP [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/init.d/apache2 restart
    Définir ce .sh comme un fichier appartenant a root

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chown root monscript.sh
    Et donner la permission aux autres users de l'executer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chmod 4755 monscript.sh
    Puis d'executer ce .sh depuis php

    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
    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 : 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
    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

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    A première vue je dirai que c'est toujours l'utilisateur www-data qui tente de lancer le serveur apache, sauf qu'un utilisateur n'a pas les permissions pour lancer un service sur un port inférieur à 1024.
    Il faudrait essayer la même chose avec un "sudo" devant la commande.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Merci pour ta réponse, avec une commande sudo cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo: no tty present and no askpass program specified

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    C'est simplement un problème de config du /etc/sudoers, tu devrais trouver ce qu'il faut ici : http://www.gratisoft.us/sudo/sudoers.man.html

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Donc si je comprends bien il faudrait

    que je laisse dans monscript.sh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo /etc/init.d/apache2 restart
    et dans mon /etc/sudoers que j'ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include /chemin/vers/monscript.sh
    C'est ça ? Je préfère demande avant de toucher a un fichier qui m'a l'air sensible sur les brèves suppositions que j'ai pu tirer de cette doc un peu obscure pour moi ^^ .

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Bon j'ai craqué, j'ai essayé et ça n'a pas marché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sudo: parse error in /etc/sudoers near line 27
    sudo: no valid sudoers sources found, quitting

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Bon alors j'avance mais c'est pas encore ça...

    J'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data ALL=(ALL) NOPASSWD:/etc/init.d/apache2 restart
    sous la ligne

    de /etc/sudoers

    puis j'execute en php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ('sudo /etc/init.d/apache2 restart',$out);
    Ça m’éteint bien le serveur, mais ça ne le redémarre pas XD !! Il y a du progrès non?

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Bon j'ai trouvé, j'ai changé restart par reload et ça fonctionne au poil, merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 04/09/2013, 21h17
  2. Réponses: 1
    Dernier message: 02/04/2012, 11h00
  3. [Wamp] Redemarrer apache via php.
    Par jordanv dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 15/03/2009, 18h23
  4. Script cgi ou php pour redémarrer Apache
    Par rogerstudio dans le forum Apache
    Réponses: 5
    Dernier message: 08/12/2006, 19h13
  5. Réponses: 8
    Dernier message: 27/07/2006, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo