当 cron 文件位于 public_html 目录之外时,Cron 作业不工作

Cron job not working when cron file is located outside public_html directory

我正在尝试向托管在远程服务器上的网站添加 php cron 作业。 cron 作业文件的路径是“/home/userid/domains/mywebsite.com/scripts/cron1.php”。我尝试了以下命令,其中 none 似乎执行了 cron 文件:

/usr/bin/php /home/userid/domains/mywebsite.com/scripts/cron1.php

cd /home/userid/domains/mywebsite.com/scripts && /usr/bin/php cron1.php

我的托管帐户没有显示任何 cron 结果错误。

但是,如果我将 cron 文件移动到 public_html 目录中并使用命令“curl https://mywebsite.com/cron1.php" 添加一个 cron 作业,它会按预期工作。但我想要 cron 文件在public_html 目录,所以我知道我不能使用 curl 命令。

请告诉我我做错了什么,或者当 cron 文件位于 public_html 目录之外时我如何让 cron 作业工作。

谢谢, 克莱门特

编辑:

我的目录树是:

用户
|- 域 (755)
...|- mywebsite.com (755)
......|- 数据(755)
.........|- cronresults.php (644)
......|- 脚本 (755)
.........|- cron1.php (644)

编辑:

cron1.php

<?php
$path = dirname(__DIR__) . "/data/cronresults.txt";
file_put_contents($path, "random text\n", FILE_APPEND);
?>

另一种方法是使用 lynx 命令(但你必须安装 lynx,比如 yum install lynx)

1 * * * * /usr/bin/lynx http://mywebsite.com/cron1.php -转储

如果您想改用PHP,您可以尝试更改

<?php
$path = dirname(__DIR__) . "/data/cronresults.txt";
file_put_contents($path, "random text\n", FILE_APPEND);
?>

改为绝对路径(如下,但要根据自己的真实路径调整)

<?php
$path =  "/var/www/websitename/data/cronresults.txt";
file_put_contents($path, "random text\n", FILE_APPEND);
?>