设置一个新的 Cron 来运行 PHP 文件,似乎什么也没发生


Setting up a new Cron to run a PHP file and nothing seems to happen

我相信这对某人来说很容易回答。

我有一个由我之前的其他人设置的专用服务器,我需要设置一个新的 cron 作业。cron 将运行一个 PHP 文件。

到目前为止,我已经做了以下工作:

  • sudo crontab -u root -e
    编辑 crontab。在我添加代码行之前的最后一行是一个PHP脚本cron,所以我使用它作为示例并将文件路径更改为我的新文件。请参阅下面的两个示例,我也将 cron 更改为每分钟运行一次:

旧示例

 */5 * * * * /usr/bin/php /home/emailer/htdocs/admin/cron.php

我添加的新代码

 */1 * * * * /usr/bin/php /home/non-cms-websites/crons/cron-notifications/index.php

我添加的脚本只是使用 PHP Mailer 向我的电子邮件帐户发送一封测试电子邮件,目前只是一个基本脚本,但当我让它工作时会有更多的功能。

我是否需要重新启动/重新加载 cron 才能运行我添加的新 cron?

服务器运行的是Linux Ubuntu 10.04 64位,如果这有什么不同的话。

任何帮助非常感谢,谢谢。

检查索引的路径.php文件是否正确。同时运行 crontab -l 命令以查看 crons 列表。

如果您使用的是Vixie Cron,则无需重新启动。 可能PHP文件路径或脚本有一些问题。请参阅下面的链接,它可能会有所帮助。我引用了一小段摘录。

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

"对于大量的守护进程(例如httpd和syslogd),它们需要重新启动。更改配置文件后,程序有机会以重新加载它们。Vixie Cron 将在文件后自动重新加载已使用 crontab 命令进行编辑。某些 cron 版本会重新加载文件每分钟一次,有些需要重新启动,但 Vixie Cron 只是加载文件(如果已更改)。

根据此链接,您需要重新启动: http://wiki.qnap.com/wiki/Add_items_to_crontab

根据此链接,您不需要重新启动,但在某些评论中,它似乎可能会因 linux 发行版而异。更改 crontab 文件后重新启动 cron?

重新启动的命令可能因 linux 发行版而异。这适用于我的 Debian 机器,也应该适用于 Ubuntu。

sudo /etc/init.d/cron restart

sudo service cron restart

你提到你已经检查过它,但不清楚你的意思是 php 的路径还是实际在 cli 上运行它 - 正如你所说,它可以通过浏览器工作,并且脚本.php路径是正确的。健全性检查 php 可执行文件

在哪里应该是在哪里

/usr/bin/php -v

虽然我运行的所有内容完全不同的版本,但在 2020 年,我的 php exec 路径是/bin/php。

而且没有有趣的权限业务。

确保你安装了 php-cli:

dpkg --get-selections | grep -i php

检查 cron 日志(通常为/var/log/cron )检查 PHP 错误。确保 php.ini 实际上有 cli 的错误日志:例如

; Log errors to specified file. PHP's default behavior is to leave this value ; http://php.net/error-log error_log = /var/log/httpd/php_errors.log ; Log errors to syslog. ;error_log = syslog

或者更简单的是,暂时启用错误显示以供脚本调试(假设尚未显式禁用)。脚本顶部之后

error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', 1);

使用您在 cron 中配置的命令字符串直接从 cli 运行它(再次 - 健全性检查!让 cron 做它的事情,然后检查日志。

cron 日志至少会告诉你它是否被调用。PHP 错误日志(或根据配置的系统日志)将为您提供预期的基础知识,但也有一些容易错过的错误,例如超出 mem 限制或配置max_execution_time。

通过网络服务器运行并不意味着它在 cli 上一切都很好。