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

问题描述

我正在尝试向托管在远程服务器上的网站添加一个 PHP cron 作业。 cron 作业文件的路径是“/home/userid/domains/mywebsite.com/scripts/cron1.PHP”。我尝试了以下命令,但似乎都没有执行 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 作业,它会按预期工作。但我想要 public_html 目录之外的 cron 文件,所以我知道我无法使用 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 -dump

如果你想改用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,FILE_APPEND);
?>