6

php://memoryを使用してラッパーから読み取ろうとしていますfread()が、fread()常に false を返します。私のコードは単純化されています:

$file_handle = fopen('php://memory', 'w+'); // Have tried php:temp also.
fwrite($file_handle, 'contents');
$file = fread($file_handle, filesize($file_handle)); // Have also tried 99999 for filesize.

$fileの後は常に falsefread()です。

どうしたの?

前もって感謝します!

4

4 に答える 4

12

書き込みによってファイル ポインタがファイルの末尾に移動するため、書き込んだばかりの内容を読み取る前に、書き込み後に rewind($file_handle) する必要があります。

于 2013-04-19T21:53:06.853 に答える
3

rewind($file_handle)前に電話するfread()

于 2017-10-06T13:27:12.097 に答える
1

ここで答えを見つけました: https://stackoverflow.com/a/2987330/2271704

rewind($file_handle)に電話する前に電話する必要がありますfread()

于 2013-04-19T21:53:40.577 に答える
0

これを取得する必要があります:

警告: filesize() は、パラメーター 1 が文字列であることを想定しており、リソースが指定されています

そして、それらが最初の問題です:

int filesize ( string $filename )—  指定されたファイルのサイズを取得します。

... そして 2 つ目: エラー報告を有効にしていません。

3 番目の問題は、ポインタがファイルの最後にあることです。次のようなことを試してください:

error_reporting(E_ALL);
ini_set('display_errors', true);
// ...

rewind($file_handle);
$file = ''; //
while (!feof($file_handle)) {
    $file .= fread($file_handle, 8192);
}
于 2013-04-19T21:57:07.280 に答える