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

在Ubuntu 16.04上有一个运行PHP脚本的Cron作业

$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 root@example.com cd /etc crontab -e :x 

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

编辑:这不是重复,PHP工作,JSON正在保存,但以错误的方式。 而且我要求帮助我了解当前Cron设置的错误。

默认情况下,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