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?


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


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


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


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


16

Este é o caminho:

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

11

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

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

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

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.


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


2

Sugerido por especialistas.

/usr/local/bin/php /home/username/public_html/path/to/cron/script


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.