Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/07/2007, 20h20   #1
Futur Membre du Club
 
Inscription : juin 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 53
Points : 15
Points : 15
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 :
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 :
# 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!
arkienou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 21h27   #2
Membre émérite
 
Inscription : mai 2002
Messages : 727
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 727
Points : 982
Points : 982
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 :
/var/www/html/_dev/cronTest.php
(sans préciser l'interpréteur qui est censé être donné par le shebang).
__________________

Smortex

Les FAQ Assembleur - Linux
In The Beginning Was The Command Line Neal Stephenson
Smortex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 11h20   #3
Futur Membre du Club
 
Inscription : juin 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 53
Points : 15
Points : 15
Merci Smortex pour ta réponse,

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

Code :
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...
arkienou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 11h34   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
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.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 11h50   #5
Futur Membre du Club
 
Inscription : juin 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 53
Points : 15
Points : 15
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 :
1
2
#chaque jour à chaque minute
* * * * * root php /var/www/html/_dev/cronTest.php
arkienou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 13h02   #6
Membre émérite
 
Inscription : mai 2002
Messages : 727
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 727
Points : 982
Points : 982
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:
Citation:
apropos mail
__________________

Smortex

Les FAQ Assembleur - Linux
In The Beginning Was The Command Line Neal Stephenson
Smortex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 14h10   #7
Futur Membre du Club
 
Inscription : juin 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 53
Points : 15
Points : 15
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 :
* * * * * 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?
arkienou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h46   #8
Membre émérite
 
Inscription : mai 2002
Messages : 727
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 727
Points : 982
Points : 982
  • 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...
__________________

Smortex

Les FAQ Assembleur - Linux
In The Beginning Was The Command Line Neal Stephenson
Smortex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 17h12   #9
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
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 :
* * * * * /usr/bin/php /var/www/html/_dev/cronMT.php
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 11h44   #10
Futur Membre du Club
 
Inscription : juin 2006
Messages : 53
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 53
Points : 15
Points : 15
Merci infiniment _Mac_!!!
Le cron marche enfin lorsque je fais crontab -e et je mets le contenu:
Code :
 * * * * * /usr/bin/php /var/www/html/_dev/cronMT.php
Merci encore et @+
arkienou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h33.


 
 
 
 
Partenaires

Hébergement Web