0

我对 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 错误。我觉得我真的很接近了,但我现在真的被困住了。如果有人可以帮助我,那就太好了。谢谢。

4

2 回答 2

2

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

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

sudo chmod -777 info.json

(如果您是 linux 机器,请输入您的密码)但是请注意,这仅用于测试目的可能会导致安全和性能问题:有关此特定安全级别的文件权限的更多信息,请查看: 在PHP / Apache / Linux 上下文,为什么 chmod 777 很危险?

于 2013-11-09T00:13:47.683 回答
1

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

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

$data->doors[0]->right = true;
于 2013-11-09T00:12:13.253 回答