问题描述
我正在尝试向托管在远程服务器上的网站添加一个 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 文件移动到 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);
?>