La sintassi per la voce crontab sembra corretta. Infatti, se modifichi il tuo crontab usando " crontab -e
" (come dovresti), otterrai un errore se specifichi comunque una voce crontab sintatticamente non valida.
Innanzitutto, viene /path_to_my_php_script/info.php
eseguito correttamente dalla riga di comando?
In tal caso, funziona correttamente anche in questo modo ?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Se funziona, funziona così?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
Il passaggio (3) è simile a come cron eseguirà il tuo programma (come documentato in "man 5 cron".
Il problema più probabile che stai riscontrando è che il cron PATH sta usando per eseguire il tuo programma è troppo restrittivo. Pertanto, potresti voler aggiungere qualcosa di simile alla parte superiore della voce crontab (dovrai aggiungere in qualsiasi directory sarà necessario il tuo script):
PATH=~/bin:/usr/bin/:/bin
Nota anche che cron utilizzerà per impostazione predefinita /bin/sh
, non bash. Se hai bisogno di bash, aggiungi anche questo all'inizio del tuo file crontab:
SHELL=/bin/bash
Si noti che entrambe queste modifiche influenzeranno tutte le voci crontab. Se vuoi solo modificare questi valori per il tuo info.php
programma, potresti fare qualcosa del genere:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Vale anche la pena ricordare che su un sistema configurato per "mail" (in altre parole un sistema che ha un MTA configurato [sendmail / postfix / etc]), tutto l'output dei programmi crontab ti viene inviato automaticamente via e-mail. Un sistema desktop Ubuntu predefinito non avrà la posta locale configurata, ma se stai lavorando su un server puoi semplicemente digitare "mail" in un terminale per vedere tutte quelle cron mail. Questo vale anche per il at
comando " ".