Exécuter un fichier PHP dans une tâche cron à l'aide de CPanel

102

J'essaie juste d'exécuter un script PHP en utilisant un travail cron dans CPanel - est-ce la syntaxe correcte:

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

Je ne reçois aucune notification par e-mail indiquant qu'un cron a été terminé, dois-je faire quelque chose de spécifique avec le fichier PHP?

Zabs
la source
25
Je pense que c'est assez pertinent vu que de nombreux projets sont hébergés sur Cpanel, et il faudrait savoir comment exécuter des tâches cron si besoin est
William
8
Si cPanel n'est pas autorisé sur Server Fault ou Stack Overflow, où devraient être les questions à ce sujet?
soufre
9
assez ironique que cette question ait été classée comme «hors sujet» pour StackOverflow, mais c'est la question la plus active que j'aie jamais eue ici ... J'espère que cela a aidé les autres :)
Zabs
Merci @Tatu Ulmanen Cela fonctionne pour moi!
Tushar Rmesh Saindane

Réponses:

66

Dans le système crontab:

  • /usr/bin/phpest le chemin binaire php (différent dans certains systèmes ex: freebsd /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php devrait être le chemin de votre script php
  • /dev/null devrait être une sortie cron, ex: /home/username/stdoutx.txt

Ainsi, vous pouvez surveiller votre cron en visualisant la sortie cron /home/username/stdoutx.txt

Somie A
la source
1
J'utilise maintenant et cela fonctionne mais je ne reçois aucune notification par e-mail. Des idées pourquoi pas? php /home/username/public_html/cron/cron.php note J'ai dû mettre la ligne suivante en haut du script PHP #! / usr / bin / php -q
Zabs
Si vous voulez que cronjob vous envoie des e-mails, vous devez utiliser php mail (), je ne pense pas que cronjob a un système de messagerie automatique, à moins que vous n'utilisiez le script shell ou php.
Somy A
1
Lorsque je clique sur l'onglet "cronjobs" dans cPanel, il y a deux cases sur la page - une pour la commande que vous souhaitez exécuter, et une autre pour l'adresse e-mail à laquelle vous voulez que la sortie soit envoyée. Ceci est dans cPanel 11.
user3640967
2
Quelle sera la commande complète? Je veux dire une commande complète en une seule ligne avec toutes les options.
Auj
@SomyA, pourriez-vous me dire la commande pour exécuter le fichier de script java.
Narender Reddy
104

J'ai utilisé cette commande pour activer le travail cron pour cela.

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

sur le serveur godaddy, et cela fonctionne très bien.

Pank
la source
2
Que -qsignifie?
Bhavik Shah
4
@BhavikShah Selon php.net/manual/en/features.commandline.options.php , -qest pour le mode silencieux, supprime la sortie d'en-tête HTTP
William
@William Merci. Je l'ai.
Bhavik Shah le
29

>/dev/null arrête cron d'envoyer des mails.

en fait, à mon avis, il est préférable de créer un phpscript lui-même pour se soucier de sa journalisation plutôt que de simplement envoyer quelque chose à cron

k102
la source
puis-je vous demander comment vous faites cela? CronTabs ne produit-il pas de toute façon quelque chose? Je fais aussi >/dev/null 2>&1à la fin ...
ThomasK
@ThomasK si vous faites une tâche comme celle- /path/to/file.php > /dev/nullci, ça va être silencieux.
k102
19

C'est le moyen le plus simple:

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

Et si vous souhaitez enregistrer la sortie du script dans un fichier, ajoutez ceci à la fin de la commande:

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

Emmanuel
la source
16

Ceci est le chemin:

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

Cette ligne cron a fonctionné pour moi sur hostgator VPS en utilisant cpanel.

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

J'ai eu des problèmes avec / usr / bin / php sur CPanel car il est compilé en tant que binaire "cgi-fcgi" et non "cli". Essayez d'utiliser / usr / local / bin / php ou, comme c'est le premier dans le chemin de toute façon, utilisez simplement 'php' à la place:

php /path/to/script.php

Si vous souhaitez exécuter le script en tant qu'exécutable, donnez-lui + x perms et utilisez ce qui suit comme première ligne du script:

#!/usr/bin/env php
BenKennish
la source
6

J'espère que votre problème vient également du binaire path & php. Si vous avez corrigé le chemin selon les réponses plus anciennes, veuillez utiliser php-cli au lieu de la commande php lors de l'exécution de la tâche cron.

Il est peut-être possible de php_sapi_name()ne pas revenir cli. Il renvoie quelque chose d'autre comme cgi-fcgietc.

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

J'espère que cela aidera.

Lakin Mohapatra
la source
3

Cela fonctionne bien et envoie également un e-mail:

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

Les deux commandes suivantes fonctionnent également correctement mais n'envoient pas de courrier électronique:

/ usr / bin / php -f / home / Identique à ci-dessus

php -f / home / Identique à ci-dessus

Sajjad
la source
2

Suggéré par des experts.

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

C'est en fait très simple,

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

Pour le travail Cron Multi PHP spécifique au domaine , procédez comme suit,

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

Dans l'exemple ci-dessus, remplacez «ea-php56» par la version PHP attribuée au domaine que vous souhaitez utiliser.

J'espère que cela aide quelqu'un.

Anjana Silva
la source