Esegui un file PHP in un cron job utilizzando CPanel


102

Sto solo cercando di eseguire uno script PHP utilizzando un cron job all'interno di CPanel - questa è la sintassi corretta:

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

Non ricevo notifiche e-mail che indicano che un cron è stato completato, devo fare qualcosa di specifico con il file PHP?


25
Penso che sia abbastanza rilevante visto che molti progetti sono ospitati su Cpanel, e bisognerebbe sapere come eseguire cron job se necessario
William

7
Se cPanel non è consentito su Server Fault o Stack Overflow, dove dovrebbero essere le domande a riguardo?
Zolfo

8
abbastanza ironico che questa domanda sia stata classificata come "fuori tema" per StackOverflow, ma è la domanda più attiva che abbia mai avuto qui ..... spero che abbia aiutato gli altri :)
Zabs

Grazie @Tatu Ulmanen Per me funziona!
Tushar Rmesh Saindane

Risposte:


66

Nel sistema crontab:

  • /usr/bin/phpè percorso php binario (diversa in alcuni sistemi es: FreeBSD /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php dovrebbe essere il percorso dello script php
  • /dev/null dovrebbe essere l'output di cron, es: /home/username/stdoutx.txt

Quindi puoi monitorare il tuo cron visualizzando l'output di cron /home/username/stdoutx.txt


1
Lo sto usando ora e funziona ma non ricevo alcuna notifica e-mail, nessuna idea, perché no? php /home/username/public_html/cron/cron.php nota ho dovuto mettere la seguente riga all'inizio dello script PHP #! / usr / bin / php -q
Zabs

Se vuoi che cronjob invii email per te, devi usare php mail (), non penso che cronjob abbia un sistema di posta automatico, a meno che tu non usi script di shell o php.
Somy A

1
Quando clicco sulla scheda "cronjobs" in cPanel, ci sono due caselle sulla pagina: una per il comando che desideri eseguire e un'altra per l'indirizzo e-mail a cui vuoi inviare l'output. Questo è in cPanel 11.
user3640967

2
Quale sarà il pieno comando? Intendo il comando completo in una riga con tutte le opzioni.
Auj

@SomyA per favore potresti dirmi il comando per eseguire il file java script.
Narender Reddy


29

>/dev/null impedisce a cron di inviare messaggi di posta.

in realtà a mio avviso è meglio creare lo phpscript stesso per preoccuparsi della registrazione piuttosto che semplicemente inviare qualcosa a cron


posso chiederti come fai? I cronTabs non restituiscono comunque qualcosa? Lo faccio anche >/dev/null 2>&1alla fine ...
ThomasK

@ThomasK se svolgi un'attività come questa rimarrà /path/to/file.php > /dev/nullsilenziosa.
k102

19

Questo è il modo più semplice:

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

E se vuoi registrare l'output dello script in un file, aggiungilo alla fine del comando:

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


16

Questo è il modo:

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

11

Questa linea di cron ha funzionato per me su hostgator VPS utilizzando cpanel.

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

10

Ho avuto problemi ad usare / usr / bin / php su CPanel in quanto è compilato come binario "cgi-fcgi" e non "cli". Prova a usare / usr / local / bin / php o, dato che è comunque il primo nel percorso, usa semplicemente "php":

php /path/to/script.php

Se vuoi eseguire lo script come eseguibile, dagli + x perms e usa quanto segue come prima riga dello script:

#!/usr/bin/env php

6

Spero che il tuo problema sia anche con path e php binary. Se hai corretto il percorso secondo le risposte precedenti, usa php-cli invece del comando php durante l'esecuzione di cron job.

Potrebbe essere possibile php_sapi_name()non restituire cli. Sta restituendo qualcos'altro come cgi-fcgiecc.

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

Spero che sarà di aiuto.


3

Funziona bene e invia anche e-mail:

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

Anche i seguenti due comandi funzionano bene ma non inviano email:

/ usr / bin / php -f / home / Come sopra

php -f / home / Come sopra


2

Suggerito da esperti.

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


0

Per il Multi PHP Cron Job specifico del dominio , fai così,

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

Nell'esempio sopra, sostituisci "ea-php56" con la versione PHP assegnata al dominio che desideri utilizzare.

Spero che questo aiuti qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.