私は現在file_put_contents
、私のJSONファイルを更新するために使用しようとしています。これは私のPHPが現在どのように見えるかです:
$result = file_put_contents('Resources/logs/file.json', $newJsonString);
if($result === true) {
echo "true";
} else {
echo "false";
}
ただし、常に を返しますfalse
。それにもかかわらず、両方のディレクトリのアクセス許可を 777 に設定しましResources
たlogs
。また、ファイルのアクセス許可を 777 に設定しましたfile.json
。
file_get_contents
同じファイルからの同じパスで動作するため、パスも正しいです。
私の主張をさらに証明するために、ユーザーがディレクトリ (およびその中のすべて) に書き込むsudo chown -R www-data:www-data /var/www/html/core/Resources/
許可を与えるために実行しました(これにより、PHP スクリプトをオンラインで実行することによって JSON ファイルに書き込むことができると想定しています)。 .Resources
www-data
これが役立つかどうかはわかりませんがPOST
、別のサーバー/Web サイトから JavaScript 経由でデータを送信して、この PHP スクリプトも実行しています。
なぜ世界で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:
これについて言及するのを忘れていましたが、このコードは昨日、約 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";
}