我遇到麻煩閱讀和PHP 5.3.2寫php://temp
流有問題的讀/寫的PHP://臨時流
我主要有:
file_put_contents('php://temp/test', 'test');
var_dump(file_get_contents('php://temp/test'));
唯一的輸出我得到的是string(0) ""
不應該讓我的'測試'回來嗎?
我遇到麻煩閱讀和PHP 5.3.2寫php://temp
流有問題的讀/寫的PHP://臨時流
我主要有:
file_put_contents('php://temp/test', 'test');
var_dump(file_get_contents('php://temp/test'));
唯一的輸出我得到的是string(0) ""
不應該讓我的'測試'回來嗎?
php://temp
不是文件路徑,它是一個僞協議,它在使用時總是創建一個新的隨機臨時文件。 /test
實際上完全被忽略。 php://temp
包裝接受的唯一額外「參數」是/maxmemory:n
。你需要保持一個文件句柄周圍打開的臨時流,否則會被丟棄:
$tmp = fopen('php://temp', 'r+');
fwrite($tmp, 'test');
rewind($tmp);
fpassthru($tmp);
fclose($tmp);
見http://php.net/manual/en/wrappers.php.php#refsect1-wrappers.php-examples
每一次,當您使用的fopen獲得處理程序,PHP的內容://溫度將會被沖洗。使用rewind()和stream_get_contents()來獲取內容。或者,使用正常的緩存,如APC或memcache :)
作爲一個方面說明,你可以'倒帶'隱式'stream_get_contents($ stream,-1,0)'。這將從頭開始讀取整個流。 – quickshiftin 2017-06-14 15:22:25
感謝 - 大腦短時間閱讀手冊頁更早... – HorusKol 2011-05-10 07:55:27
找到我需要的 - 使用vfsStream – HorusKol 2011-05-10 08:35:45