设置一个新的 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 向我的电子邮件帐户发送一封测试电子邮件,目前只是一个基本脚本,但当我让它工作时会有更多功能。
我是否需要 restart/reload cron 以便我添加的新程序运行?
服务器正在运行 Linux Ubuntu 10.04 64 位,如果有区别的话。
非常感谢任何帮助,谢谢。
检查 index.php 文件的路径是否正确。还有 运行 crontab -l 命令来查看 crons 列表。
根据这个link你需要重启:http://wiki.qnap.com/wiki/Add_items_to_crontab
根据这个 link 你不需要重新启动,但在一些评论中似乎它可能因 linux 分布而异。 Restarting cron after changing crontab file?
重新启动的命令可能因 linux 发行版而异。这适用于我的 Debian 机器,应该也适用于 Ubuntu。
sudo /etc/init.d/cron restart
或
sudo service cron restart
我想如果您使用的是 Vixie Cron,则不需要重新启动。可能 php 文件路径或脚本有问题。请参阅下面的 link 它可能会有所帮助。我引用了一小段。
http://www.unixgeeks.org/security/newbie/unix/cron-1.html
“有很多守护进程,(例如 httpd 和 syslogd)它们需要重新启动
配置文件更改后,程序有机会
重新加载它们。 Vixie Cron 将在它们完成后自动重新加载文件
已使用 crontab 命令编辑。一些 cron 版本重新加载
每分钟文件,有些需要重新启动,但 Vixie Cron 只是加载
如果文件已更改。"
你提到你已经检查过它,但不清楚你是指 php 的路径还是实际上 运行 它在 cli 上的路径 - 正如你所说的那样它可以通过浏览器工作,并且.php 脚本的路径是正确的。完整性检查 php 可执行文件应该在什么地方
/usr/bin/php -v
虽然我 运行 完全不同的所有版本,是 2020 年,但我的 php 执行路径是 /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 错误日志(或根据配置的系统日志)将为您提供预期的基础知识,但也会提供一些容易遗漏的错误,例如超出内存限制或配置的 max_execution_time。
运行通过网络服务器连接并不意味着它在 cli 上一切正常。
我相信这对某人来说很容易回答。
我有一个专用服务器,它是由我之前的其他人设置的,我需要设置一个新的 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 向我的电子邮件帐户发送一封测试电子邮件,目前只是一个基本脚本,但当我让它工作时会有更多功能。
我是否需要 restart/reload cron 以便我添加的新程序运行?
服务器正在运行 Linux Ubuntu 10.04 64 位,如果有区别的话。
非常感谢任何帮助,谢谢。
检查 index.php 文件的路径是否正确。还有 运行 crontab -l 命令来查看 crons 列表。
根据这个link你需要重启:http://wiki.qnap.com/wiki/Add_items_to_crontab
根据这个 link 你不需要重新启动,但在一些评论中似乎它可能因 linux 分布而异。 Restarting cron after changing crontab file?
重新启动的命令可能因 linux 发行版而异。这适用于我的 Debian 机器,应该也适用于 Ubuntu。
sudo /etc/init.d/cron restart
或
sudo service cron restart
我想如果您使用的是 Vixie Cron,则不需要重新启动。可能 php 文件路径或脚本有问题。请参阅下面的 link 它可能会有所帮助。我引用了一小段。
http://www.unixgeeks.org/security/newbie/unix/cron-1.html
“有很多守护进程,(例如 httpd 和 syslogd)它们需要重新启动 配置文件更改后,程序有机会 重新加载它们。 Vixie Cron 将在它们完成后自动重新加载文件 已使用 crontab 命令编辑。一些 cron 版本重新加载 每分钟文件,有些需要重新启动,但 Vixie Cron 只是加载 如果文件已更改。"
你提到你已经检查过它,但不清楚你是指 php 的路径还是实际上 运行 它在 cli 上的路径 - 正如你所说的那样它可以通过浏览器工作,并且.php 脚本的路径是正确的。完整性检查 php 可执行文件应该在什么地方
/usr/bin/php -v
虽然我 运行 完全不同的所有版本,是 2020 年,但我的 php 执行路径是 /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 错误日志(或根据配置的系统日志)将为您提供预期的基础知识,但也会提供一些容易遗漏的错误,例如超出内存限制或配置的 max_execution_time。
运行通过网络服务器连接并不意味着它在 cli 上一切正常。