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

Administration système Discussion :

Exécution d'un cron PHP


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut Exécution d'un cron PHP
    Bonjour,

    je tente d'exécuter un cron php en écrivant dans le fichier /etc/cron.d/cron le contenu suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/php
     
    #chaque jour à chaque minute
    * * * * * php /var/www/html/_dev/cronTest.php
    Mais cela ne marche pas automatiqument. Par contre l'exécution se passe bien sur la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # php /var/www/html/_dev/cronTest.php
    Sachant que j'ai fait un chmod 755 cronTest.php, pourriez-vous me dire où se situe mon souci?

    Merci d'avance pour votre aide!

  2. #2
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Salut

    Citation Envoyé par arkienou
    pourriez-vous me dire où se situe mon souci?
    Tu n'as pas [bien] lu la page de man... Le 6ème champ dans les crontab "système" correpond à un utilisateur... ici php... Je me doute que tu n'as pas d'utilisateur "php" sur ton système... du coup la tâche n'est pas exécutée.

    La ligne de commande pour vérifier que tout va bien n'est pas celle que tu donne mais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /var/www/html/_dev/cronTest.php
    (sans préciser l'interpréteur qui est censé être donné par le shebang).

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Merci Smortex pour ta réponse,

    Néanmoins, ayant modifié mon fichier cron comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #chaque jour à chaque minute
    * * * * * root php /var/www/html/_dev/cronTest.php
    ça ne marche toujours pas, alors que la ligne de commande php /var/www/html/_dev/cronTest.php marche bien.
    J'ai vérifié aussi que le daemon crond est bien en exécution...

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Vérifie voir si l'utilisateur root n'a pas reçu un mail : un mail est envoyé à l'utilisateur du cron quand la tâche a été lancée.

    Idem : si tu demandes à ce que le script soit exécuté par root (6ème champ du cron), il faut que tu édites le crontab avec l'utilisateur root.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Merci _Mac_ pour ta réponse. Par contre j'ai 2 questions à te poser:
    1. comment vérifier si root a reçu un mail? (quelle commande?)

    2. voici le résultat d'un ls -l sur mon fichier cron:
    -rwxr-xr-x 1 root root 169 jui 24 2007 /etc/cron.d/cron
    cela ne veut-il pas dire que j'ai édité le cron avec l'utilisateur root?

    Je précise que c'est dans le fichier /etc/cron.d/cron que j'ai écit le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #chaque jour à chaque minute
    * * * * * root php /var/www/html/_dev/cronTest.php

  6. #6
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Je réitère:
    Citation Envoyé par Smortex
    Tu n'as pas [bien] lu la page de man...

    Citation Envoyé par man 5 crontab
    PATH is set to "/usr/bin:/bin"
    Donc soit tu met le chemin complet vers PHP, soit tu modifie PATH pour que cron trouve PHP, soit tu ne spécifie pas l'interpréteur (si le script PHP est bien fait).

    Pour lire les mails:
    apropos mail

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Je viens de relire le résultat de la commande man 5 crontab, et j'ai repris tout le processus en partant de zéro:
    Depuis le compte root, j'ai édité la crontab root avec la commande crontab -e
    J'ai placé dans ce fichier la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * root /usr/bin/php /var/www/html/_dev/cronMT.php
    car le chemin de l'exécutable PHP est dans /usr/bin/php
    J'ai redamarré le daemon cron: /etc/rc.d/init.d/crond restart
    Malgré cela, ça ne passe pas!!!

    et ce, sachant qu'à partir de la ligne de commande l'exécution de /usr/bin/php /var/www/html/_dev/cronMT.php se passe nickel!!!!

    Qu'aurais-je omis de faire pour faire marcher le CRON?

  8. #8
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    • Vérifie les mails de root (/var/mail/root).
    • Si aucun, vérifie que ton script est bien exécuté (écrit un fichier sur le disque par exemple)
    • Si pas de fichier créé, ajoute une tâche "echo hello" et vérifie que tu reçois des mails... Vérifie avant que tu peux échanger des mails entre utilisateurs...

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par arkienou
    Depuis le compte root, j'ai édité la crontab root avec la commande crontab -e
    Attention : cette commande n'est pas équivalente à éditer le fichier /etc/cron.d/cron. Avec crontab -e, il ne faut pas préciser le compte root dans ta ligne de conf car c'est implicitement l'utilisateur qui exécute crontab. Donc si tu refais crontab -e, tu dois mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * /usr/bin/php /var/www/html/_dev/cronMT.php

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Merci infiniment _Mac_!!!
    Le cron marche enfin lorsque je fais crontab -e et je mets le contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     * * * * * /usr/bin/php /var/www/html/_dev/cronMT.php
    Merci encore et @+

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

Discussions similaires

  1. [PHP-JS] Problème d'exécution d'un script php
    Par Yoteco dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2006, 14h19
  2. [Système] Exécution d'un script PHP à heures fixes
    Par Kiyomizu dans le forum Langage
    Réponses: 5
    Dernier message: 26/04/2006, 09h30
  3. [Système] Forcer l'exécution d'un code php
    Par florent dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2005, 13h13
  4. exécution des fichiers index.php
    Par berry dans le forum Apache
    Réponses: 4
    Dernier message: 20/12/2004, 20h29
  5. Cron + PHP
    Par messier79 dans le forum Administration système
    Réponses: 3
    Dernier message: 13/10/2004, 02h24

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