我們有時候會遇到附件上傳不成功的問題,下面將常見的一些原因總結一下,供大家參考。
1 、伺服器磁碟或購買的虛擬空間滿了
這種情況常常表現為前臺提交表單成功,附件並沒有上傳上去,附件目錄裡剛剛上傳的附件的大小為 0 。
解決方法:清理磁碟空間。
2 、附件目錄沒有寫許可權
上傳附件的時候要求附件目錄有寫許可權,否則上傳失敗。
解決方法:
1) 如果伺服器是 Linux 主機,請將附件目錄的許可權設定為 777,並將許可權繼承到附件目錄的下級目錄;
2) 如果伺服器是 Windows 主機,請設定附件目錄 IIS 來賓賬戶 (或者執行這個站點的 IIS 賬號) 寫許可權,並繼承到附件目錄的下級目錄。
3 、系統臨時目錄滿了
在 php.ini 中沒有設定上傳臨時目錄的情況下,系統會將上傳到伺服器的檔案放在系統的臨時目錄裡 (Windows 伺服器的系統臨時目錄是 c:WindowsTEMP;Linux 的系統臨時目錄是/tmp),這個目錄滿了,上傳檔案就會失敗。
解決方法:將系統臨時目錄清理一下。
4 、系統臨時目錄的許可權有問題
這種情況主要發生在 Windows 主機上。一般情況下,不用另外設定系統臨時目錄的許可權。特別情況下需要設定 IIS 來賓賬號 (或執行 IIS 的賬號) 對系統臨時目錄有寫許可權
5 、 PHP 臨時目錄的問題
在 php.ini 中,可以透過 upload_tmp_dir 的值,來設定透過 PHP 程式上傳的檔案的臨時目錄,如果這個目錄滿了或者許可權有問題,也會導致上傳附件不成功。
解決方法:
1) 如果設定的臨時目錄滿了,清空一下這個目錄
2) 設定臨時目錄執行 IIS 來賓賬號 (或執行 IIS 的賬號) 寫許可權
6 、上傳的附件大小超過了系統允許的附件大小或者超出了允許提交表單的大小
伺服器允許上傳的附件大小和允許提交表單的大小分別是透過 php.ini 中的 upload_max_filesize 、 post_max_size 設定的,預設大小分別是 2M 、 8M,如果上傳的附件的大小和表單的大小超過了這兩個引數設定的大小,就會出現上傳附件不成功的情況。
解決辦法:適當改大 upload_max_filesize 這個引數的值 (如果上傳的附件超過 6M,建議使用 ftp 或者其他方式上傳),然後重新啟動一下 web 伺服器軟體。
7 、空間商限制了目錄屬性
有些空間限制了目錄屬性,導致在附件目錄下建立子目錄時失敗
8 、 Apache 配置檔案中設定了 open_basedir
如果您的 web 伺服器是 Apache 的話,可以在的配置檔案裡指定 open_basedir 引數來限制 Apache 能夠訪問的目錄,如果指定了這個引數,可能導致上傳附件不成功。
解決辦法:將系統的臨時目錄或者 php.ini 中 upload_tmp_dir 引數設定的目錄、附件目錄新增到 open_basedir 設定中或者將這個引數註釋掉 (慎用),然後重新啟動 Apache 。
這是常見的集中情況,希望能對大家有所幫助。