使用CPanel在cron作业中运行PHP文件


102

我只是想在CPanel中使用cron作业运行PHP脚本-这是正确的语法:

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

我没有收到任何电子邮件通知,说明cron已完成,我需要对PHP文件做一些特定的事情吗?


25
我认为,鉴于Cpanel上托管了许多项目,这非常相关,而且如果需要的话,一个人将需要知道如何运行cron作业
William

7
如果在服务器故障或堆栈溢出时不允许使用cPanel,应该在哪里提出疑问?
硫磺

8
具有讽刺意味的是,这个问题被列为StackOverflow的“脱题”,但这是我在这里遇到过的最活跃的问题……..我希望它对其他人
有所

谢谢@Tatu Ulmanen对我有用!
Tushar Rmesh Saindane

Answers:


66

在crontab系统中:

  • /usr/bin/php是php程序二进制文件路径(在某些系统的前夫不一样:在FreeBSD /usr/local/bin/php,Linux的:/usr/bin/php
  • /home/username/public_html/cron/cron.php 应该是你的PHP脚本路径
  • /dev/null 应该是cron输出,例如: /home/username/stdoutx.txt

因此,您可以通过查看cron输出来监视cron /home/username/stdoutx.txt


1
我现在正在使用它,并且可以正常工作,但是我没有收到任何电子邮件通知,为什么不呢?php /home/username/public_html/cron/cron.php注意我必须将以下行放在PHP脚本的顶部#!/ usr / bin / php -q
Zabs 2011年

如果您希望cronjob为您发送电子邮件,则必须使用php mail(),除非您使用shell脚本或php,否则我不认为cronjob具有自动邮件系统。
Somy A

1
当我单击cPanel中的“ cronjobs”选项卡时,页面上有两个框-一个用于您要执行的命令,另一个用于您要将输出发送到的电子邮件地址。这是的cPanel 11
user3640967

2
什么是完整命令?我的意思是在所有选项中都包含一行完整的命令。
2013年

@SomyA,请您告诉我运行Java脚本文件的命令。
Narender Reddy


29

>/dev/null 阻止cron发送邮件。

实际上在我看来,最好使php脚本本身来关心它的日志记录,而不是只输出某些内容给cron


请问你是怎么做到的?cronTabs不会输出到任何东西吗?我>/dev/null 2>&1也在结尾处做...
ThomasK 2013年

@ThomasK如果您执行这样的任务,/path/to/file.php > /dev/null它将保持沉默。
13年

19

这是最简单的方法:

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

如果要将脚本输出记录到文件中,请将其添加到命令末尾:

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


16

这是这样的:

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

11

这个cron线路对我使用cpanel的hostgator VPS起作用。

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

10

我在CPanel上使用/ usr / bin / php时遇到问题,因为它被编译为“ cgi-fcgi”二进制而不是“ cli”。尝试使用/ usr / local / bin / php,或者因为它首先出现在路径中,所以只需使用'php'即可:

php /path/to/script.php

如果要将脚本作为可执行文件运行,请给它+ x权限,并使用以下内容作为脚本的第一行:

#!/usr/bin/env php

6

我希望您的问题也是路径和php二进制文件。如果您已按照旧答案修复了路径,请在运行cron作业时使用php-cli而不是php命令。

可能php_sapi_name()没有返回cli。它返回别的东西像cgi-fcgi等。

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

希望对您有所帮助。


3

这可以正常工作,并发送电子邮件:

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

以下两个命令也可以正常工作,但不发送电子邮件:

/ usr / bin / php -f / home /与上述相同

php -f / home /与上述相同




0

对于特定于域的Multi PHP Cron Job,请执行以下操作,

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

在上面的示例中,将“ ea-php56”替换为分配给您要使用的域的PHP版本。

希望这对某人有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.