Probleme cron !

Petit nouveau ! | 5 Messages

29 août 2006, 14:50

Bonjour à tous,

J'ai un petit souci côté serveur avec l'execution d'une commande cronjob.

En fait je tape ma commande, je l'enegistre etc..
Quand je tape la commande "cronjob -l", ma tache apparaît bien mais visiblement elle ne n'ececute pas :shock:
35 14 * * * wget –q –O dev/null http://www.lurldemonsite/monscript.php
Donc en toute logique la commande devrait s'executer tous les jours à 14h35 mais là j'attends toujours...:(

Quelqu'un se sent de m'aider ?

Eléphant du PHP | 217 Messages

29 août 2006, 20:19

Essais comme ça :
35 14 * * * wget –q http://www.lurldemonsite/monscript.php >/dev/null 2>&1

Ensuite cela peut venir de certains point de configuration(safe mode) et ce que doit faire ton script. Il peut y avoir des problèmes de droit.
35 14 * * * root wget –q http://www.lurldemonsite/monscript.php >/dev/null 2>&1

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 août 2006, 23:03

Euh, si le cron tourne sur le même serveur que le script, ne vaudrait-il pas mieux appeler php directement ? (je vous laisserai vérifier la syntaxe du cron ;))

Code : Tout sélectionner

35 14 * * * php /var/www/monsite.com/monscript.php

ViPHP
ViPHP | 1380 Messages

30 août 2006, 07:47

Dans tous les cas, il faut indiquer le chemin complet de la commande. Par exemple:

Code : Tout sélectionner

35 14 * * * /usr/bin/wget –q –O - http://www.lurldemonsite/monscript.php
Cron ne connait pas la variable d'environnement PATH puisqu'il travaille hors shell. On peut aussi rajouter un PATH dans le crontab:

Code : Tout sélectionner

PATH=/sbin:/bin:/usr/sbin:/usr/bin
Petit truc pour vérifier le path d'une commande:

Code : Tout sélectionner

$ which wget
Quant à invoquer directement php-cli, faire attention aux modules qui sont inclus plutôt que compilés dans php-cli. Faire un php -m pour voir ce qui est compilé.

S'il manque un module nécessaire à l'exécution du script, on peut créer son propre php-cli.ini et le charger avec l'option -c

Code : Tout sélectionner

# php-cli.ini extension_dir = "/usr/lib/php4/20020429" extension=mysql.so

Code : Tout sélectionner

35 14 * * * /usr/bin/php -c /etc/php-cli.ini /var/www/monsite.com/monscript.php
Ou bien charger, avec la même option, le php.ini principal.
ripat

Petit nouveau ! | 5 Messages

31 août 2006, 12:48

Merci pour vos réponses mais là je crois que j'ai pas tout compris.

Le script php appelé est bien sur le même serveur (serveur 1&1).
J'ai fais un chmod (777) sur mon fichier php mais toujours rien.

Quelqu'un peut m'aider ?

Petit nouveau ! | 5 Messages

31 août 2006, 12:48

Là je galère vraiment :(

ViPHP
ViPHP | 1380 Messages

31 août 2006, 14:49

As-tu mis le chemin complet vers la commande wget?
Dans tous les cas, il faut indiquer le chemin complet de la commande. Par exemple:

Code : Tout sélectionner

35 14 * * * /usr/bin/wget –q –O - http://www.lurldemonsite/monscript.php
Cron ne connait pas la variable d'environnement PATH puisqu'il travaille hors shell. On peut aussi rajouter un PATH dans le crontab:

Code : Tout sélectionner

PATH=/sbin:/bin:/usr/sbin:/usr/bin
Petit truc pour vérifier le path d'une commande:

Code : Tout sélectionner

$ which wget
ripat

Petit nouveau ! | 5 Messages

31 août 2006, 15:41

Merci beaucoup pour ton aide.

Le problème c'est que ce que tu es en train de me dire c'est un peu du chinois :xd

je suis désolé de pas tout comprendre mais là c'est un peu hard pour moi :(

ViPHP
ViPHP | 1380 Messages

31 août 2006, 16:29

Au lieu de faire:

35 14 * * * wget –q –O dev/null http://www.lurldemonsite/monscript.php

Tu fais

35 14 * * * /usr/bin/wget –q –O - http://www.lurldemonsite/monscript.php

/usr/bin/ devrait être le chemin vers la commande wget. Renseigne-toi chez ton hébergeur pour connaître le chemin vers cette commande. Ou, si tu as un accès au shell, fais:

Code : Tout sélectionner

which wget
ripat