![Cronjob 将 json 保存到错误的目录中](https://linux22.com/image/1154280/Cronjob%20%E5%B0%86%20json%20%E4%BF%9D%E5%AD%98%E5%88%B0%E9%94%99%E8%AF%AF%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD.png)
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