La syntaxe de l'entrée crontab semble correcte. En effet, si vous modifiez votre crontab en utilisant " crontab -e
" (comme vous le devriez), vous obtiendrez une erreur si vous spécifiez quand même une entrée de crontab syntaxiquement invalide.
Tout d’abord, /path_to_my_php_script/info.php
s’exécute-t-il correctement à partir de la ligne de commande?
Si oui, fonctionne-t-il correctement comme ceci ?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Si cela fonctionne, ça marche comme ça?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
L'étape (3) est similaire à la façon dont cron exécutera votre programme (comme indiqué dans "man 5 cron".
Le problème le plus probable que vous rencontrez est que le PATH utilisé par cron pour exécuter votre programme est trop restrictif. Par conséquent, vous souhaiterez peut-être ajouter quelque chose comme ceci en haut de votre entrée dans la crontab (vous devrez ajouter les répertoires dont votre script aura besoin):
PATH=~/bin:/usr/bin/:/bin
Notez également que cron utilisera par défaut /bin/sh
, pas bash. Si vous avez besoin de bash, ajoutez également ceci au début de votre fichier crontab:
SHELL=/bin/bash
Notez que ces deux modifications affecteront toutes les entrées de la crontab. Si vous voulez simplement modifier ces valeurs pour votre info.php
programme, vous pouvez faire quelque chose comme ceci:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Il est également intéressant de noter que sur un système configuré pour "mail" (en d'autres termes, un système sur lequel un MTA est configuré [sendmail / postfix / etc]), toutes les sorties des programmes crontab vous sont envoyées automatiquement par courrier électronique. La messagerie locale ne sera pas configurée sur un système de bureau Ubuntu par défaut, mais si vous travaillez sur un serveur, vous pouvez simplement taper "mail" dans un terminal pour voir tous ces courriers cron. Ceci s'applique également à la at
commande " ".