我目前正在尝试使用file_put_contents
更新我的 JSON 文件。这是我的 PHP 目前的样子:
$result = file_put_contents('Resources/logs/file.json', $newJsonString);
if($result === true) {
echo "true";
} else {
echo "false";
}
但是,它总是返回false
。尽管如此,我已将目录权限设置为 777Resources
和logs
. 我还将文件权限设置为 777 file.json
。
该路径也是正确的,file_get_contents
与来自同一文件的相同路径一起使用。
为了进一步证明我的观点,我还跑来sudo chown -R www-data:www-data /var/www/html/core/Resources/
授予用户Resources
写入目录(以及其中的所有内容)的权限www-data
(我假设这将允许通过在线运行 PHP 脚本来写入 JSON 文件) .
我不知道这是否有帮助,但我也在运行这个 PHP 脚本,POST
方法是通过 JavaScript 从不同的服务器/网站向它发送数据。
为什么在世界上file_put_contents
仍然返回 false 并且不写入文件?它总是在运行后使 JSON 文件为空。
补充代码:
这是整个代码块,包括以下file_put_contents
部分:
$jsonString = file_get_contents('Resources/logs/file.json');
$data = json_decode($jsonString);
$data->coins = $data->coins + $coins;
$data->uses = $data->uses + 1;
print_r($data);
$newJsonString = json_encode($data);
$result = file_put_contents('Resources/logs/file.json', $newJsonString);
if($result === true) {
echo "true";
} else {
echo "false";
}
...这是 JSON 文件:
{"coins":"0","uses":"0"}
任何帮助将不胜感激,我已经尝试解决这个问题一整天了。
编辑1:
我忘了提及这一点,但这段代码昨天运行得非常好,大约一个小时。然后突然间它停止工作并开始将 JSON 文件设为空白。
编辑2:
我刚刚清除了 Apache 错误日志,并且脚本再次运行(这很好)。然而,file_put_contents
还在回归false
。到底是怎么回事...
编辑3:
感谢 Laurent Wartel,我更新了我的 if 语句file_put_contents
,它似乎不再返回 false。
if($result === false) {
echo "Error";
} else {
echo "All good, $result bytes written";
}