php8.0 fwriteでエラー「 Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in」が発生する
phpで、fwriteでエラー「 Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in」が発生する原因と対象法を記述してます。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
エラー内容
以下のコードを実行時に発生。
<?php
// hoge.txtは存在しない
$file = fopen('hoge.txt', 'r+');
var_dump($file); // bool(false)
fwrite($file, 'hello world');
rewind($file);
fclose($file);
エラー全文
PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /usr/share/nginx/html/sample.php:7
Stack trace:
7.4.5ではwarningとなります。
PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /usr/share/nginx/html/sample.php:7
Stack trace:
原因
型が違うため、php8ではエラーとなってしまう。
対処法
当然ですが、hoge.txtを作成すれば、エラーは解消します。
<?php
touch('hoge.txt');
$file = fopen('hoge.txt', 'r+');
var_dump($file); // resource(5) of type (stream)
fwrite($file, 'hello world');
rewind($file);
echo fread($file, filesize('hoge.txt')); // hello world
fclose($file);
-
前の記事
javascript for-inを使用してオブジェクトのキーを取得する 2020.12.10
-
次の記事
Trisquelにapache2をインストールする 2020.12.10
コメントを書く