我們有時候會遇到附件上傳不成功的問題,下面將常見的一些原因總結一下,供大家參考。

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 。

這是常見的集中情況,希望能對大家有所幫助。