それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

RuntimeException: SplFileInfo::getSize(): stat failed for php://temp となり、getSize出来ない

php8.1 までで起こる

SplFileInfo / SplFileObject / SplTempFileObject で php://memory php://stream を使うとエラーになる。

<?php
    $sf= new \SplTempFileObject();
    $sf->fwrite($ret);
    $sf->getSize(); // =>Error
    

対応

fstat は動くのでそっちを使う。

<?php
    $sf= new \SplTempFileObject();
    $sf->fwrite($ret);
    $sf->fstat()['size']; // => ok
    

こんなの気づかないよねぇ。

すでにパッチは投稿されていた

https://github.com/php/php-src/pull/4186

パット見だとClosedになっているので、そのうち使えるようになると思う。