Execute um arquivo PHP em um cron job usando CPanel

102

Estou apenas tentando executar um script PHP usando um cron job no CPanel - esta é a sintaxe correta:

/usr/bin/php -q /home/username/public_html/cron/cron.php >/dev/null

Não estou recebendo nenhuma notificação por e-mail informando que um cron foi concluído. Preciso fazer algo específico com o arquivo PHP?

Zabs
fonte
25
Acho que é bastante relevante ver como muitos projetos são hospedados no Cpanel, e seria necessário saber como executar cron jobs se necessário
William
7
Se cPanel não for permitido no Server Fault ou Stack Overflow, onde deveriam estar as perguntas sobre isso?
Brimstone de
8
bastante irônico que esta pergunta tenha sido classificada como 'fora do tópico' para StackOverflow, mas é a pergunta mais ativa que já tive aqui ..... Espero que tenha ajudado outros :)
Zabs
Obrigado @Tatu Ulmanen Funciona para mim!
Tushar Rmesh Saindane

Respostas:

66

No sistema crontab:

  • /usr/bin/phpé caminho php binário (diferente em alguns sistemas ex: FreeBSD /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php deve ser o caminho do seu script php
  • /dev/null deve ser a saída do cron, por exemplo: /home/username/stdoutx.txt

Então você pode monitorar seu cron visualizando a saída do cron /home/username/stdoutx.txt

Somy A
fonte
1
Estou usando isso agora e funciona, mas não recebo nenhuma notificação por e-mail, nenhuma ideia por que não? php /home/username/public_html/cron/cron.php note Eu tive que colocar a seguinte linha no topo do script PHP #! / usr / bin / php -q
Zabs
Se você quiser que o cronjob envie emails para você, você deve usar php mail (), eu não acho que o cronjob tenha um sistema de email automático, a menos que você use script de shell ou php.
Somy A,
1
Quando clico na guia "cronjobs" no cPanel, há duas caixas na página - uma para o comando que você deseja executar e outra para o endereço de e-mail para o qual deseja que a saída seja enviada. Isso está no cPanel 11.
user3640967
2
Qual será o comando total? Quero dizer comando completo em uma linha com todas as opções.
Auj
@SomyA, por favor, você poderia me dizer o comando para executar o arquivo de script java.
Narender Reddy
104

Usei este comando para ativar o cron job para isso.

/usr/bin/php -q /home/username/public_html/yourfilename.php

no servidor godaddy, e está funcionando bem.

Pank
fonte
2
O que -qsignifica?
Bhavik Shah
4
@BhavikShah De acordo com php.net/manual/en/features.commandline.options.php , -qé para o modo Silencioso, suprime a saída do cabeçalho HTTP
William
Obrigado @William. Entendi.
Bhavik Shah
29

>/dev/null impede que o cron envie emails.

na verdade, na minha opinião, é melhor fazer o phppróprio script para se preocupar com o registro do que apenas enviar algo para o cron

k102
fonte
posso perguntar como você faz isso? O cronTabs não dá saída para algo mesmo? Eu faço >/dev/null 2>&1no final também ...
ThomasK
@ThomasK se você fizer uma tarefa como essa, /path/to/file.php > /dev/nullela ficará em silêncio.
k102
19

Esta é a maneira mais fácil:

php -f /home/your_username/public_html/script.php

E se você quiser registrar a saída do script em um arquivo, adicione isto ao final do comando:

>> /home/your_username/logs/someFile.txt 2>&1

Emmanuel
fonte
16

Este é o caminho:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null
Asi
fonte
11

Esta linha cron funcionou para mim no hostgator VPS usando cpanel.

/usr/bin/php -q /home/username/public_html/scriptname.php
Mike Volmar
fonte
10

Tive problemas ao usar / usr / bin / php no CPanel, pois ele é compilado como um binário "cgi-fcgi" e não como "cli". Tente usar / usr / local / bin / php ou, como é o primeiro no caminho, use apenas 'php':

php /path/to/script.php

Se você deseja executar o script como um executável, dê a ele + x perms e use o seguinte como a primeira linha do script:

#!/usr/bin/env php
BenKennish
fonte
6

Espero que seu problema seja com o binário path e php também. Se você corrigiu o caminho de acordo com as respostas mais antigas, use php-cli em vez do comando php enquanto executa o cron job.

Pode ser possível php_sapi_name()não estar voltando cli. Está retornando algo como cgi-fcgietc.

/usr/bin/php-cli -q /home/username/public_html/cron/cron.php >/dev/null

Eu espero que isso ajude.

Lakin Mohapatra
fonte
3

Isso funciona bem e também envia e-mail:

/ usr / bin / php /home/xxYourUserNamexx/public_html/xxYourFolderxx/xxcronfile.php

Os dois comandos a seguir também funcionam bem, mas não enviam e-mail:

/ usr / bin / php -f / home / mesmo que acima

php -f / home / mesmo que acima

Sajjad
fonte
2

Sugerido por especialistas.

/usr/local/bin/php /home/username/public_html/path/to/cron/script
Ali Akram
fonte
1

Na verdade, é muito simples,

php -q /home/username/public_html/cron/cron.php
Dushyanth Kandiah
fonte
0

Para o Multi PHP Cron Job específico do domínio , faça assim,

/usr/local/bin/ea-php56 /home/username/domain_path/path/to/cron/script

No exemplo acima, substitua “ea-php56” pela versão do PHP atribuída ao domínio que deseja usar.

Espero que isso ajude alguém.

Anjana Silva
fonte