我对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错误。我觉得我真的很亲密,但我现在真的被困住了。如果有人可以帮助我,那将是非常好的。感谢。
答案 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;