PHP中有許多關于文件操作的函數和語句,其中之一就是tmpfile()函數。這個函數創建一個臨時文件并返回該文件的句柄,不需要指定路徑和文件名。臨時文件在關閉的時候會自動刪除。
舉個例子,假設我們需要在服務器上生成一個臨時圖片來生成一個驗證碼。那么可以使用以下代碼:
$im = imagecreate(100, 50); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 5, 5, 5, 'Hello world!', $text_color); $tmpfile = tmpfile(); imagepng($im, $tmpfile); imagedestroy($im);
上面的代碼首先創建一個100x50的空白圖片,然后在圖片上添加一行字,最后將圖片以png格式寫入一個臨時文件中。由于$tmpfile已經是一個句柄,我們可以直接使用它來輸出圖片,比如使用以下代碼輸出到瀏覽器:
header('Content-Type: image/png'); fseek($tmpfile, 0); fpassthru($tmpfile); fclose($tmpfile);
可以看到$tmpfile并沒有指定路徑和文件名,這就是tmpfile()函數幫我們解決的問題。那么它的路徑到底在哪里呢?
實際上,PHP會在系統的臨時目錄中創建一個臨時文件,并返回該文件的句柄。可以通過調用phpinfo()函數獲得系統的臨時目錄。例如:
phpinfo();
輸出會包含以下信息:
System Temp directory /tmp
也就是說,如果上面的代碼在Linux系統上運行,那么臨時文件的路徑是/tmp/phpKOPLvB。在Windows系統上,路徑可能會在C:\Windows\Temp目錄下。
當然,我們也可以手動指定一個路徑來保存臨時文件。比如使用以下代碼:
$tmpfile = fopen('/home/user/tmp/mytempfile.txt', 'w+');
這將在/home/user/tmp目錄下創建一個名為mytempfile.txt的文件。
總之,tmpfile()函數為我們提供了一種簡單方便的方式來創建臨時文件,不需要擔心文件名重復的問題,而且方便自動刪除。當然,如果需要手動保存文件,也可以使用fopen()函數來指定路徑。
下一篇json或xml解析