A sintaxe da entrada crontab parece correta. De fato, se você editar seu crontab usando " crontab -e
" (como deveria), você receberá um erro se você especificar uma entrada crontab sintaticamente inválida de qualquer maneira.
-
Em primeiro lugar, o
/path_to_my_php_script/info.php
é executado corretamente a partir da linha de comando? -
Em caso afirmativo, ele também é executado corretamente assim:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
-
Se isso funciona, funciona assim?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
O passo (3) é semelhante ao modo como o cron irá executar o seu programa (conforme documentado em "man 5 cron".
O problema mais provável que você está tendo é que o cron PATH está usando para executar o seu programa é muito restritivo. Portanto, você pode adicionar algo como o seguinte ao topo da sua entrada no crontab (você precisará adicionar os diretórios que seu script precisará):
PATH=~/bin:/usr/bin/:/bin
Observe também que o cron usará por padrão /bin/sh
, não bash. Se você precisar de bash, inclua isto no início do seu arquivo crontab:
SHELL=/bin/bash
Observe que ambas as alterações afetarão todas as entradas do crontab. Se você quiser apenas modificar esses valores para o programa info.php
, poderá fazer algo assim:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Também vale ressaltar que em um sistema configurado para "mail" (em outras palavras, um sistema que possui um MTA configurado [sendmail / postfix / etc]), todas as saídas de programas crontab são enviadas para você via e-mail automaticamente. Um sistema de desktop padrão do Ubuntu não terá correio local configurado, mas se você estiver trabalhando em um servidor, basta digitar "mail" em um terminal para ver todos os e-mails do cron. Isso também se aplica ao comando " at
".