【发布时间】:2014-07-21 12:26:31
【问题描述】:
这是我当前的 JSON 文件:
{"coins":"0","uses":"0"}
...我用以下 PHP 重写了这些值:
$data = json_decode(file_get_contents('test.json'), true);
$data["coins"] = iconv($data["coins"] + $coins);
$data["uses"] = iconv($data["uses"] + 1);
file_put_contents('test.json', json_encode($data));
我已打印出$data 的值,并看到它包含新值。然而,file_put_contents 写入的文件始终是空白的。关于为什么会这样的任何建议?
编辑:
这是$data 返回的内容:
Array ( [coins] => 100 [uses] => 1 )
稍微修改一下我的代码后,file_put_contents 似乎返回了false。不过,我已将文件权限设置为 777 (test.json)。
【问题讨论】:
-
file_put_contents()调用的返回值说明了什么?true还是false?我假设false在大多数情况下会导致系统为运行 PHP 的用户授予的写入权限不足。 -
您可能缺乏对目标文件/目标的写入权限?
-
@TiMESPLiNTER:权限不足不可能是问题的根源,因为文件被打开了,之前的内容被删除了。
-
@up 不,你是对的,因为 iconv 的使用错误。 $data 可能包含 null,因为“iconv”使用错误,json 结构可能格式错误,json_encode 可能返回 null。 null 可以评估为 php 中的空字符串,因此 file_put_contents 可能会覆盖整个内容,因为如果缺少参数标志,则未设置 FILE_APPEND 标志。
-
正如时间分裂所指出的那样。
$data包含数据,file_put_contents返回 false,这肯定是权限问题。请检查 php 用户是否对该文件有写权限。