问题描述
|
我想每天16:00更新数据库中的某些内容。
因此,我使用crontab执行执行运行file.PHP的命令,后者运行更新。当我在bash中执行命令时,它可以完美运行,但是crontab出现了问题。
crontab:
00 16 * * * ./etc/cron.daily/maj_cat
maj_cat
PHP var/www/dev/update.PHP
谢谢!
解决方法
./etc/cron.daily/maj_cat是相对路径,而var / www / dev / update.php也是相对路径,请尝试:
00 16 * * * /etc/cron.daily/maj_cat
和maj_cat:
php /var/www/dev/update.php
您可以做到:
00 16 * * * /usr/bin/env php /var/www/dev/update.php
, 您将要使用PHP的完整路径,
输入:
PHP在哪里
通常,PHP驻留在/ usr / bin / php
导致:
/ usr / bin / php /var/www/dev/update.php
我发现通过输出到文件来测试crontab是否正在执行很有用,因此您知道cron实际上正在执行,例如:
/ usr / bin / php /var/www/dev/update.php> output.txt
如上所示,您最好在\“ var \”前面加上一个斜杠。
, crondeaemon可能不使用手动设置的PATH变量。
确保php在路径中(在crontab的头部)。
否则,您可以尝试在脚本中使用绝对路径。
, Cron在运行cronjobs时会使用默认配置文件,该配置文件可能与登录时使用的配置文件路径不同。您可以在cronjob的开头加载自己的配置文件,以确保cronjob \的环境与您的环境匹配登录环境。
您可以通过以下方式加载个人资料:
00 16 * * * ~/.profile; ./etc/cron.daily/maj_cat