Cronjob 将 json 保存到错误的目录中

Cronjob 将 json 保存到错误的目录中

Ubuntu 16.04 上有一个 Cron 作业,它运行一个 PHP 脚本

$parseinfo = 'parseme.json';
$handle = fopen($parseinfo, 'w');
fwrite($handle, json_encode($res));

将数据解析为 JSON 文件。PHP 脚本应该将数据写入此 PHP 脚本所在的同一文件夹中,但我遇到一个问题,JSON 被保存到 root 的主目录中:

这是我设置 Cron 作业的方式:

*/10 * * * *  root    /usr/bin/php    /var/www/somederictory/somefolder/parse.php > /dev/null

从终端:

ssh [email protected]
cd /etc
crontab -e
:x

简而言之:JSON 被保存到了,/root而我希望它被保存到/var/www/somederictory/somefolder/ 我应该怎么做才能修复它?

编辑:这不是重复的,PHP 可以运行,JSON 正在保存,但保存方式错误。我想请人帮我了解当前 Cron 设置出了什么问题。

答案1

默认情况下,Cron 任务在用户的主目录中执行。如果您的脚本中未提供要保存输出文件的路径,则它将保存到执行脚本的目录中。

根据问题,您希望将.json文件生成到脚本所在的同一目录中。 因此(在这种情况下)您必须以某种方式更改代码,类似于这样:

$parseinfo = 'parseme.json';
$path = realpath(dirname(__FILE__));
$handle = fopen("$path/" . $parseinfo, 'w');
fwrite($handle, json_encode($res));

如果您不想更改脚本,您可以按照以下方式更改 Cron 作业:

*/10 * * * * root    cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null

相关内容