我只是想在 CPanel 中使用 cron 作业运行 PHP 脚本 - 这是正确的语法吗:
/usr/bin/php -q /home/username/public_html/cron/cron.php >/dev/null
我没有收到任何说明 cron 已完成的电子邮件通知,我需要对 PHP 文件执行任何特定操作吗?
我使用此命令为此激活 cron 作业。
/usr/bin/php -q /home/username/public_html/yourfilename.php
在godaddy服务器上,它工作正常。
在 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 输出 /home/username/stdoutx.txt
来监控您的 cron
>/dev/null
停止 cron 发送邮件。
实际上在我看来,最好让 php
脚本本身来关心它的日志记录,而不是仅仅向 cron 输出一些东西
>/dev/null 2>&1
......
/path/to/file.php > /dev/null
,它将保持沉默。
这是最简单的方法:
php -f /home/your_username/public_html/script.php
如果要将脚本输出记录到文件中,请将其添加到命令的末尾:
>> /home/your_username/logs/someFile.txt 2>&1
这是这样的:
/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null
这条 cron 行在使用 cpanel 的 hostgator VPS 上为我工作。
/usr/bin/php -q /home/username/public_html/scriptname.php
我在 CPanel 上使用 /usr/bin/php 时遇到问题,因为它被编译为“cgi-fcgi”二进制文件而不是“cli”。尝试使用 /usr/local/bin/php 或者,因为它在路径中的第一个,所以只使用 'php' 代替:
php /path/to/script.php
如果要将脚本作为可执行文件运行,请给它 +x perms 并将以下内容用作脚本的第一行:
#!/usr/bin/env php
我希望您的问题也与路径和 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
我希望它会有所帮助。
这工作正常,还发送电子邮件:
/usr/bin/php /home/xxYourUserNamexx/public_html/xxYourFolderxx/xxcronfile.php
以下两个命令也可以正常工作,但不发送电子邮件:
/usr/bin/php -f /home/同上
php -f /home/同上
专家建议。
/usr/local/bin/php /home/username/public_html/path/to/cron/script
其实很简单,
php -q /home/username/public_html/cron/cron.php
对于特定于域的多 PHP Cron 作业,请这样做,
/usr/local/bin/ea-php56 /home/username/domain_path/path/to/cron/script
在上面的示例中,将“ea-php56”替换为分配给您希望使用的域的 PHP 版本。
希望这可以帮助某人。
在 Hostgator CPANEL 上,这对我有用:
php /home/here_your_user_name/public_html/cronJob.php
-q
代表什么?-q
用于安静模式,抑制 HTTP 标头输出