Chạy tệp PHP trong cron job bằng CPanel


102

Tôi chỉ đang cố chạy một tập lệnh PHP bằng cron job trong CPanel - đây có phải là cú pháp chính xác không:

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

Tôi không nhận được bất kỳ thông báo email nào cho biết cron đã được hoàn thành, tôi có cần phải làm bất kỳ điều gì cụ thể với tệp PHP không?


25
Tôi nghĩ điều đó khá phù hợp khi thấy nhiều dự án được lưu trữ trên Cpanel và một người sẽ cần biết cách chạy các công việc cron nếu cần
William

7
Nếu cPanel không được phép trên Server Fault hoặc Stack Overflow, bạn nên đặt câu hỏi về nó ở đâu?
brimstone

8
khá mỉa mai rằng câu hỏi này được phân loại là 'lạc đề' cho StackOverflow nhưng là câu hỏi tích cực nhất mà tôi từng có ở đây ..... Tôi hy vọng nó sẽ giúp ích cho những người khác :)
Zabs 13/09/16

Thanx @Tatu Ulmanen Nó phù hợp với tôi!
Tushar Rmesh Saindane

Câu trả lời:


66

Trong hệ thống crontab:

  • /usr/bin/phplà đường dẫn nhị phân php (khác nhau trong một số hệ thống, ví dụ: freebsd /usr/local/bin/php, linux /usr/bin/php:)
  • /home/username/public_html/cron/cron.php phải là đường dẫn tập lệnh php của bạn
  • /dev/null phải là đầu ra cron, ví dụ: /home/username/stdoutx.txt

Vì vậy, bạn có thể theo dõi cron của mình bằng cách xem đầu ra cron /home/username/stdoutx.txt


1
Tôi đang sử dụng cái này ngay bây giờ và nó hoạt động nhưng tôi không nhận được bất kỳ email thông báo nào, bất kỳ ý tưởng tại sao không? php /home/username/public_html/cron/cron.php lưu ý Tôi phải đặt dòng sau ở đầu tập lệnh PHP #! / usr / bin / php -q
Zabs

Nếu bạn muốn cronjob gửi email cho bạn, bạn phải sử dụng php mail (), tôi không nghĩ cronjob có hệ thống thư tự động, trừ khi bạn sử dụng shell scripting hoặc php.
Somy A

1
Khi tôi nhấp vào tab "cronjobs" trong cPanel, có hai hộp trên trang - một hộp cho lệnh bạn muốn thực hiện và một hộp khác cho địa chỉ e-mail mà bạn muốn gửi đầu ra. Đây là trong cPanel 11.
user3640967

2
Lệnh đầy đủ sẽ là gì? Ý tôi là toàn bộ lệnh trong một dòng với tất cả các tùy chọn.
Auj

@SomyA vui lòng cho tôi biết lệnh để chạy tệp kịch bản java.
Narender Reddy


29

>/dev/null ngăn cron gửi thư.

thực sự theo suy nghĩ của tôi, tốt hơn là nên tự tạo phpscript để quan tâm đến việc ghi nhật ký hơn là chỉ xuất một thứ gì đó ra cron


tôi có thể hỏi làm thế nào bạn làm điều đó? CronTabs không xuất ra thứ gì đó? Tôi cũng làm >/dev/null 2>&1ở phần kết ...
ThomasK

@ThomasK nếu bạn thực hiện một nhiệm vụ như thế này, /path/to/file.php > /dev/nullnó sẽ im lặng.
k102

19

Đây là cách dễ dàng nhất:

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

Và nếu bạn muốn ghi đầu ra tập lệnh vào một tệp, hãy thêm phần này vào cuối lệnh:

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


16

Đây là cách:

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

11

Dòng cron này đã làm việc cho tôi trên hostgator VPS sử dụng cpanel.

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

10

Tôi đã gặp sự cố khi sử dụng / usr / bin / php trên CPanel vì nó được biên dịch dưới dạng tệp nhị phân "cgi-fcgi" chứ không phải "cli". Hãy thử sử dụng / usr / local / bin / php hoặc, vì nó là đầu tiên trong đường dẫn, chỉ cần sử dụng 'php' thay thế:

php /path/to/script.php

Nếu bạn muốn chạy tập lệnh dưới dạng tệp thực thi, hãy cho nó + x perms và sử dụng dòng sau làm dòng đầu tiên của tập lệnh:

#!/usr/bin/env php

6

Tôi hy vọng vấn đề của bạn là với đường dẫn & php nhị phân. Nếu bạn đã sửa đường dẫn theo các câu trả lời cũ hơn, vui lòng sử dụng php-cli thay vì lệnh php trong khi chạy cron job.

Nó có thể php_sapi_name()không trở lại cli. Nó trả lại một cái gì đó khác như cgi-fcgiv.v.

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

Tôi mong nó sẽ có ích.


3

Điều này hoạt động tốt và cũng gửi email:

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

Hai lệnh sau cũng hoạt động tốt nhưng không gửi được email:

/ usr / bin / php -f / home / Tương tự như trên

php -f / home / Tương tự như trên


2

Đề xuất bởi các chuyên gia.

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


0

Đối với công việc Multi PHP Cron dành cho miền cụ thể , hãy làm như thế này,

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

Trong ví dụ trên, thay thế “ea-php56” bằng phiên bản PHP được gán cho miền bạn muốn sử dụng.

Hy vọng điều này sẽ giúp ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.