为什么cronjob默认在public_html之外写?

问题描述 投票:0回答:1

我在我的public_html文件夹名cron.php中为一个文件定义了一个简单的cronjob,这个文件每分钟只将当前日期时间插入到log.txt文件中。

/usr/local/bin/php -f /home/{{user}}/public_html/cron.php >/dev/null 2>&1

这是每分钟工作,但是;

cron.php位于/home/{{user}}/public_html/cron.php

cron.php中,$ filename值如下:

$filename= "log.txt";

如果我直接浏览我的浏览器并输入http://www.sitename.com/cron.php,它会将当前日期时间写入log.txt文件并完美运行。

crontab每分钟做同样的事情但是,如果这个脚本通过cron服务log.txt文件触发写入/home/{{username}}/文件夹,

所以在public_html之外。

怎么可能,我该如何解决这个问题?

注意:如果我将文件名值更改为$filename = "/home/{{user}}/public_html/log.txt";,那么它再次起作用。但我不想指定fullpath,我需要在同一个文件夹中创建一个log.txt文件。

php server cron centos
1个回答
1
投票

这是因为您的Cron工作目录与您的http服务器不同。只需将您的crontab更改为:

cd  /home/{{user}}/public_html ; /usr/local/bin/php -f /home/{{user}}/public_html/cron.php >/dev/null 2>&1

或恕我直言更好的解决方案是将其改为:

wget -q -O /dev/null http://{{your website}}/~{{your username}}/cron.php 
© www.soinside.com 2019 - 2024. All rights reserved.