Cron Job não está funcionando

1

Eu posso executar este comando da CLI sem problemas na caixa fedora, mas não em um Cron:

/usr/bin/php /var/www/support_web/api/cron.php

Esta é a saída do cron:

Saída do comando / usr / bin / php /var/www/support_web/api/cron.php ..

77

O arquivo tem permissões de execução.

Log do Crontab:

Jun 11 11:46:20 www crontab[23453]: (root) BEGIN EDIT (root)
Jun 11 11:46:21 www crontab[23453]: (root) REPLACE (root)
Jun 11 11:46:21 www crontab[23453]: (root) END EDIT (root)
Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/crontab)
Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/cron.d/smolt)
Jun 11 11:47:01 www crond[2479]: (root) RELOAD (cron/root)
    
por codex73 11.06.2009 / 16:34

4 respostas

1

Você está executando a partir do CLI e do cron com o mesmo usuário? Se você executá-lo da CLI como um usuário normal e do cron com o root, o root pode estar perdendo algumas variáveis de ambiente que o cron.php precisa.

Você pode tentar executar a partir do cron do root com algo como:

su - userToRunAs -c "/usr/bin/php /var/www/support_web/api/cron.php"
    
por 11.06.2009 / 16:49
5

Os arquivos cron devem ter um usuário / grupo de root / root (/ etc / cron * e /etc/cron.{daily,hourly,etc}/* devem ser de propriedade de root, caso contrário os scripts não serão disparados off.

Eu não sei sobre crontabs pessoais em / var / spool / cron / $ username. Minha experiência pessoal, no entanto, sugere que é raiz / "grupo de usuários"

Existem também alguns requisitos de permissões, mas não sei quais são. Eu sei, no entanto, que 755 funciona.

    
por 11.06.2009 / 17:59
2

É difícil dizer exatamente, mas pode ser uma variável de ambiente que você definiu no seu shell interativo, mas isso não está sendo definido pelo cron. Coloque algumas instruções de impressão em cron.php que imprimam quaisquer variáveis de ambiente que dependam, para que você possa ver se está definido corretamente.

Se isso falhar, adicione mais instruções de impressão para ver o que está acontecendo.

    
por 11.06.2009 / 16:50
1

Se o script, por exemplo, estiver em um diretório como cron.daily , em que os arquivos são executados automaticamente, algumas implementações de cron sempre as executam com sh , independentemente do shebang. Tente criar um simples sh -script que simplesmente chame /usr/bin/php /var/www/support_web/api/cron.php .

    
por 11.06.2009 / 17:30