標籤:作業系統 機器 php 作者 htm jpeg 檔案夾 code size
在《PHP 5.3 入門經典》9.6.3 的試一試中(P235),給出了一個上傳檔案的例子,這裡的檔案格式為jpeg圖片(image/jpeg)。如果之前未配置 php.ini 中的 upload_tmp_dir 參數,則會出現上傳失敗的提示資訊。看如下程式碼片段
if(isset($_FILES["photo"])) and $_FILES["photo"]["error"] == UPLOAD_ERR_OK)
該判斷語句中的條件如果為真,則繼續。而此時 $_FILES["photo"]["error"] 值為6,UPLOAD_ERR_OK值為0(表示上傳成功)。
下面列出 $_FILES["photo"]["error"] 不同值所代表含義:
其值為 0,沒有錯誤發生,檔案上傳成功。其值為 1,上傳的檔案超過了 PHP.ini 中 upload_max_filesize 選項限制的值。其值為 2,上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。其值為 3,檔案只有部分被上傳。其值為 4,沒有檔案被上傳。其值為 6,找不到臨時檔案夾。php 4.3.10 和 PHP 5.0.3 引進。其值為 7,檔案寫入失敗。PHP 5.1.0 引進。
即找不到臨時檔案夾,一般來說是為配置php.int中的 upload_tim_dir 或者其值配置不正確。
網上例子一般推薦 upload_tim_dir = "C:\Windows\Temp",實際上因為安全/許可權等方面原因,依然會報錯(6)。
故作者修改其路徑為其它,比如 upload_tim_dir = "C:\temp",此時程式即可正常運行。有些博主提及需要將 "C:\temp" 檔案夾 Users 組/使用者 添加“寫入”許可權。而作者測試時發現不修改也可以,可能與機器/作業系統環境有關。
tips:upload_tim_dir = "C:\Windows\Temp" 中路徑字串將 "\" 替換為 "/" 或兩者混用沒有任何影響。(PHP 7.1.6)
關於PHP上傳檔案時配置 php.ini 中的 upload_tmp_dir