使用PHP更新JSON文件

时间:2013-11-09 00:05:42

标签: php json

我对JSON和PHP都很陌生但是我正在构建一个需要一个独立数据库的游戏,该数据库可以跟踪在迷宫中被锁定和解锁的门。

我的JSON文件如下所示:

{ "doors": 
    [
        {"left":true, "right":false, "bottom":false}, 
        {"left":false, "right":false, "bottom":false},
        {"right":false, "bottom":false, "top":false}
    ]
}

我的PHP文件如下所示:

$jsonString = file_get_contents('info.json');
$data = json_decode($jsonString);
$data["doors"][0]["right"] = true;
$newJsonString = json_encode($data);
file_put_contents('info.json', $newJsonString);

我在javascript中使用ajax调用它,如果我使用var_dump($data)我可以读取该文件但是一旦我尝试编辑该文件,我就会收到500错误。我觉得我真的很亲密,但我现在真的被困住了。如果有人可以帮助我,那将是非常好的。感谢。

2 个答案:

答案 0 :(得分:2)

您是通过localhost还是其他服务器文件夹在var / www中运行它?如果是这样,web-process可能没有足够的权限写入目录。

编辑: 如果您在受限制的目录(例如var / www或您的用户目录之外)中运行,您可以尝试更改您尝试写入的文件的权限,例如: (尝试将其放入您的JSON文件所在的目录中)

sudo chmod -777 info.json

(如果你是一个linux盒子,请输入你的pw) 但请注意,这仅用于测试 ,可能导致安全性和表现问题: 有关具有文件权限的此特定安全级别的更多信息,请查看: In a PHP / Apache / Linux context, why exactly is chmod 777 dangerous?

答案 1 :(得分:1)

500错误是Internal Server Error。这通常意味着某处存在错误配置。调试它的最佳方法是检查您的Web服务器的错误日志,它应该告诉您它为什么会抛出500错误。

另外,请注意,没有第二个json_decode()参数的$assoc会返回一个对象而不是一个数组,因此要覆盖一个您需要将其设置为对象属性的键: / p>

$data->doors[0]->right = true;