我在我的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
文件。
这是因为您的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