我尝试php
每 2 分钟通过 cron 执行一次文件,但不起作用。我的 crontab 是:
*/2 * * * * usr/bin/php /var/www/test/cron.php
我究竟做错了什么?
答案1
检查输出which php
并使用 php 的绝对路径(在我的情况下/usr/bin/php5
)。
*/2 * * * * /usr/bin/php /var/www/test/cron.php
要不就
*/2 * * * * php /var/www/test/cron.php
为了澄清,默认$PATH
值为cron
PATH=/usr/bin:/bin
您可以$PATH
使用测试条目(来源):
* * * * * env > /tmp/env.output
因此,文件
/tmp/env.output
被建造。
* * * * * env > /tmp/env.output
之后您必须删除该条目。
答案2
我的建议是使用标准 Web 路径调用脚本,这样就不会混淆用户和权限,例如:
/usr/bin/php <script>
而是这样做:
/usr/bin/wget -q http://localhost/test/cron.php
然后您需要确保该脚本只能从本地主机调用(例如使用 Apache2 访问策略)。
这样,cron 脚本将始终在与网站相同的用户下运行,这是一个很好的策略。