Jalankan file PHP dalam pekerjaan cron menggunakan CPanel

102

Saya hanya mencoba menjalankan skrip PHP menggunakan tugas cron dalam CPanel - apakah ini sintaks yang benar:

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

Saya tidak mendapatkan pemberitahuan email yang menyatakan bahwa cron telah selesai, apakah saya perlu melakukan sesuatu yang spesifik dengan file PHP?

Zabs
sumber
25
Saya pikir ini cukup relevan karena banyak proyek dihosting di Cpanel, dan orang perlu tahu cara menjalankan cron job jika perlu
William
8
Jika cPanel tidak diizinkan di Server Fault atau Stack Overflow, pertanyaan apa yang harus diajukan?
belerang
9
cukup ironis bahwa pertanyaan ini digolongkan sebagai 'di luar topik' untuk StackOverflow tetapi merupakan pertanyaan paling aktif yang pernah saya miliki di sini ..... Saya harap ini membantu orang lain :)
Zabs
Thanx @Tatu Ulmanen Ini bekerja untuk saya!
Tushar Rmesh Saindane

Jawaban:

66

Dalam sistem crontab:

  • /usr/bin/phpadalah php biner jalan (yang berbeda di beberapa sistem ex: freebsd /usr/local/bin/php, linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php harus menjadi jalur skrip php Anda
  • /dev/null harus berupa keluaran cron, misalnya: /home/username/stdoutx.txt

Jadi, Anda dapat memantau cron Anda dengan melihat keluaran cron /home/username/stdoutx.txt

Somy A
sumber
1
Saya menggunakan ini sekarang dan berfungsi tetapi saya tidak mendapatkan pemberitahuan email apa pun, ada ide mengapa tidak? php /home/username/public_html/cron/cron.php note Saya harus meletakkan baris berikut di bagian atas script PHP #! / usr / bin / php -q
Zabs
Jika Anda ingin cronjob mengirim email untuk Anda, Anda harus menggunakan php mail (), saya rasa cronjob tidak memiliki sistem email otomatis, kecuali jika Anda menggunakan shell scripting atau php.
Somy A
1
Ketika saya mengklik tab "cronjobs" di cPanel, ada dua kotak di halaman - satu untuk perintah yang ingin Anda jalankan, dan satu lagi untuk alamat email yang Anda inginkan untuk dikirimi keluaran. Ini ada di cPanel 11.
user3640967
2
Apa yang akan menjadi perintah penuh? Maksud saya perintah lengkap dalam satu baris dengan semua opsi.
Auj
@SomyA tolong beri tahu saya perintah untuk menjalankan file java script.
Narender Reddy
104

Saya menggunakan perintah ini untuk mengaktifkan tugas cron untuk ini.

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

di server GoDaddy, dan berfungsi dengan baik.

Pank
sumber
2
Apa artinya -q?
Bhavik Shah
4
@BhavikShah Menurut php.net/manual/en/features.commandline.options.php , -qadalah untuk mode Diam, menekan keluaran header HTTP
William
@Terimakasih. Mengerti.
Bhavik Shah
29

>/dev/null menghentikan cron mengirim email.

sebenarnya menurut saya lebih baik membuat phpskrip itu sendiri untuk memperhatikan loggingnya daripada hanya mengeluarkan sesuatu ke cron

k102
sumber
bolehkah saya bertanya bagaimana anda melakukannya? Bukankah cronTabs menghasilkan sesuatu? Saya lakukan >/dev/null 2>&1di bagian akhir juga ...
ThomasK
@ThomasK jika Anda membuat tugas seperti ini /path/to/file.php > /dev/nullakan diam.
k102
19

Ini cara termudah:

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

Dan jika Anda ingin memasukkan output skrip ke file, tambahkan ini ke akhir perintah:

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

Emmanuel
sumber
16

Inilah caranya:

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

Garis cron ini berfungsi untuk saya di VPS hostgator menggunakan cpanel.

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

Saya mengalami masalah saat menggunakan / usr / bin / php di CPanel karena ia dikompilasi sebagai biner "cgi-fcgi" dan bukan "cli". Coba gunakan / usr / local / bin / php atau, karena yang pertama ada di jalur, cukup gunakan 'php' sebagai gantinya:

php /path/to/script.php

Jika Anda ingin menjalankan skrip sebagai file yang dapat dieksekusi, berikan + x perms dan gunakan baris berikut sebagai baris pertama skrip:

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

Saya harap masalah Anda ada pada path & php binary juga. Jika Anda telah memperbaiki jalur sesuai jawaban yang lebih lama, silakan gunakan php-cli alih-alih perintah php saat menjalankan cron job.

Mungkin saja php_sapi_name()tidak kembali cli. Itu mengembalikan sesuatu yang lain seperti cgi-fcgidll.

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

Saya harap ini akan membantu.

Lakin Mohapatra
sumber
3

Ini berfungsi dengan baik dan juga mengirim email:

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

Dua perintah berikut juga berfungsi dengan baik tetapi jangan mengirim email:

/ usr / bin / php -f / home / Sama Seperti Di Atas

php -f / home / Sama Seperti Di Atas

Sajjad
sumber
2

Disarankan Oleh Para Ahli.

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

Ini sebenarnya sangat sederhana,

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

Untuk Multi PHP Cron Job khusus domain , lakukan seperti ini,

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

Dalam contoh di atas, ganti "ea-php56" dengan versi PHP yang ditetapkan ke domain yang ingin Anda gunakan.

Semoga ini bisa membantu seseorang.

Anjana Silva
sumber