Problème crontab et execution script

Bonjour,

J’aimerais lancer un script toutes les 5 minutes sur un linux ubuntu et pour cela j’essaye d’utiliser le crontab.

Le problème est justement l’execution du script en question qui contient : php -f /var/www/gestion_fax.php

Lorsque je le lance a la main tout marche tres bien

Par contre lorsque je le laisse se lancer via le cron, la un des appels au logiciel Tesseract (présent dans le fichier gestion_fax.php dont l’objectif est de faire l’analyse OCR d’un fichier tiff) plante complètement et me met qu il ne peut ouvrir le fichier tiff que le logiciel doit traiter

A votre avis d’ou cela peut venir?

merci

Php…

Bon, mis à part ça, il ne peux pas l’ouvrir ou ne le trouve pas ? Si c’est dans ton cron que s’exécute le script, alors les différents fichiers doivent avoir des droits pour toi. Ensuite, il y a toujours quelque chose de mystérieux avec les Crons et les chemins, donc si possible, utilise des chemins absolus ou contrôle bien tes chemins relatifs.

il l’ouvre sans soucis
a part que le logiciel tesseract trouve une erreur sur le tiff

alors qu a l’identique a la main tout se passe bien

Y’a rien de mysterieux, cron s’execute sans PATH donc il ne sait pas trouver un executable sans lui donner le chemin absolu.
Sauf que certaines distribs remplissent une variable PATH dans le crontab (ou dans les scripts) et d’autres non…

Faudrait savoir qu’elle est l’erreur exactement…
Si il ne trouve pas le fichier, c’est probablement un probleme de PATH donc il faut lui donner le chemin complet au fichier.

Quand tu executes un script a la main dans ton shell, tu n’es pas dans le meme contexte d’execution que cron. Lorsque tu te logues, tu as tout un ensemble de variables d’environnements qui sont creees et mise a jour alors que cron ne les as pas. La plus importante est PATH qui donne la liste des repertoires dans lequels il faut chercher un executable par defaut mais il peut y en avoir d’autres plus ou moins necessaires suivant ce qu’on veut lancer (java est tres chiant par exemple)
Edité le 17/05/2009 à 19:44

Vi enfin, du coup, tu sait jamais ce qui va se passer. Donc en ce qui me concerne, c’est chemins absolus par défaut et si possible toute commande encapsulée dans un scripte sh.

mouais, chemins absolus suffisent…
Ou le mieux, est de declarer une variable PATH dans ton script

comment declarer une variable PATH dans le script sh?

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin