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 :

Récupération de commande cron


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut Récupération de commande cron
    Bonjour à tous.

    Je développe un site en PHP/MySQL, héberger sur un serveur RedHat. J'ai des tâches CRON qui sont déjà programmé sur mon serveur et j'ai une page qui doit m'automatiser une nouvelle tâche. Avant d'automatiser cette tâche, je doit vérifier qu'elle n'existe pas déjà dans mon crontab.

    Voici le code que j'exécute pour récupérer et consulter mes commandes CRON :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    exec('crontab -l', $varcron);
     
    $compte = 0;
    foreach($varcron as $id => $cmd){
        $compte ++;
        echo $cmd.'<br />';
    }
    echo 'nombre de commande cron : '.$compte;
    Voila mon problème. Quand j'exécute la commande "crontab -l" sur mon serveur, j'ai bien ma liste de tâche qui s'affiche (6 tâches). Par contre, quand j'exécute le code PHP précédent, mon navigateur m'affiche "nombre de commande cron : 0".

    Quelqu'un pourrait-il me dire pourquoi je n'arrive pas a récupérer ma liste de tâche ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    pour commencer, je ne sais pas si tu connais ce tuto : http://matthieu.developpez.com/execution_periodique/#L2 avec des exemples prêts à l'emploi.

    Ensuite, pourrais-tu faire un var_dump($varcron) ?

    De plus, sers-toi du troisième argument de exec (http://php.net/manual/fr/function.exec.php) pour connaître le retour.

    A vue de nez, un problème de droit de ton binaire PHP, mais les deux infos demandées ci-dessus aideraient au diagnostic.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Merci karl3i pour ta réponse.

    Le tutoriel que tu propose est la base sur la quel je me repose pour faire des ajouts/suppression de commande cron.

    Le var_dump($varcron) me retourne "array(0){}".

    Comme tu me l'a dit, j'ai essayé d'utiliser le dernier élément de la fonction exec, et lorsque j'affiche la valeur que prend cet élément, il me retourne 1.

    Voila je crois que j'ai répondu a toute tes questions. Au niveau des droits quel pourrais être le problème ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Je n'arrive pas à trouver sur le net les codes retours de crontab - et en particulier ce que signifie la valeur 1.

    Au niveau des droits, il peut s'agir du fait que l'utilisateur qui lance l'interpréteur PHP n'ait pas les droits pour faire cette opération (c'est une hypothèse).

    Quand tu te connectes sur le serveur, toi, tu es en root ou alors un utilisateur avec suffisamment de droit.
    Suivant l'utilisateur qu'Apache utilise, il n'a pas ces droits-là.

    Pour savoir qui est l'utilisateur, tu fais :

    et tu cherches quelque chose comme httpd.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Effectivement je me connecte au serveur en tant que root. J'ai exécuter la commande ps -aux et l'utilisateur qui exécute le processus httpd est nobody.
    Par contre je ne sait pas comment modifier les droits utilisateurs pour permettre a nobody d'exécuter crontab -l (noob en linux ). J'ai pensé utiliser sudo ou su, mais je ne sait pas trop comment les utiliser.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    Je pense qu'il ne faut pas chercher à modifier l'utilisateur Nobody. Il s'agit d'un "non-privileged user", probablement utilisé par d'autres démons sur ta machine. Si tu modifies ses droits, tu risques de créer une faille de sécurité.

    L'idée c'est que tu crées un nouvel utilisateur avec suffisamment de droits, mais juste ce qu'il faut. Si ton Apache user a trop de droits, c'est une faille aussi qui pourrait être exploitée.

    @+

Discussions similaires

  1. [VxiR2] Récupération données commande d'invite
    Par Manu355 dans le forum Webi
    Réponses: 6
    Dernier message: 29/07/2009, 12h05
  2. Lancer Commande Cron
    Par FranT dans le forum Unix
    Réponses: 1
    Dernier message: 23/09/2008, 12h50
  3. Commandes FTP dans un CRON
    Par tissard dans le forum Administration système
    Réponses: 3
    Dernier message: 06/10/2006, 22h58
  4. Réponses: 9
    Dernier message: 21/06/2006, 16h41
  5. Récupération du résultat d'une commande shell
    Par klu dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2006, 23h34

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