Apache+PHP大文件上傳問題

以前小生不是搭建了一個web站點嘛,Apache+PHP的環境,由於在騰訊雲的雲主機裏面,並非我能觸摸到的真實設備,因此我一些本機須要上傳到服務器的文件就須要經過QQ郵箱發送到騰訊雲主機上面,後來由於騰訊雲的IE瀏覽器出了點問題,致使不能訪問網頁,我就不能經過QQ郵箱來上傳文件了,讓我非常憂傷;可是我在看PHP教程的時候記得看過關於PHP上傳文件的教程,在編譯器上面把html的form表單寫好了,在把相關的PHP代碼寫在後面,就是下面這個樣子:php

寫好以後教程上面是採用上傳GIF文件,可是我把它改了一下,改上傳一個我喜歡的一首歌,那首歌有10M,上傳時發現不行,既沒有提示失敗也沒提示成功,我覺得是個人代碼出問題了,仔細看也沒看出什麼問題,而後我仍是按照教程上面來,改爲上傳GIF文件,相關的代碼我也改了GIF文件類型的,發現上傳GIF是能夠的,那就證實個人代碼沒有問題,我多改了幾回不一樣的文件,有的能有的不能,仔細對比上傳經過的,發現小文件均可以上傳,大一點的文件就不能夠了,網上查找了一下相關資料,發現須要改php.ini配置文件,具體以下:html

 

爲何上傳大文件老是失敗,可是上傳小文件就沒有問題。小編也不得其解,網上搜其緣由,整理了一篇關於php上傳大文件失敗的緣由和解決辦法的文章,分享給你們。nginx

下面分別是各類緣由以及解決辦法:
第1種狀況:文件上傳時存放文件的臨時目錄必須是開啓的而且是 PHP 進程全部者用戶可寫的目錄。若是未指定則 PHP 使用系統默認值。
php.ini文件中upload_tmp_dir用來講明PHP上傳的文件放置的臨時目錄,要想上傳文件,得保證服務器沒有關閉臨時文件並對該文件夾有寫入的權限。
web

第2種狀況:max_execution_time 的值必須足夠大。變量 max_execution_time 設置了在強制終止腳本前PHP等待腳本執行完畢的時間,此時間以秒計算。當腳本進入了一個無限循環狀態時此變量很是有用。然而,當存在一個須要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會致使操做失敗。在這樣的狀況下必須考慮將此變量值增大,以免PHP在腳本正在執行某些重要過程的時候將腳本關閉,例如設置爲 90 秒。
max_execution_time = 90
注意在php函數中還有個set_time_limit 函數,和以上這個設置的做用是相同的,這二者的區別就是 以上是在 php.ini 文件中設置的,而set_time_limit 是寫在php文件中的。因此也能夠經過在頁面中用 set_time_limit 設置程序的最長執行時間,好比無限制即:set_time_limit(0);
瀏覽器

第3種狀況:file_uploads = On 默認值爲on,意思是容許經過 HTTP 進行文件上傳,此選項不能設置爲OFF。安全

第4種狀況:upload_max_filesize = 2M 設定文件上傳的大小的最大值,php.ini配置文件中的默認文件上傳大小爲2M,php初學者容易犯的一個錯誤是在編寫文件上傳功能時經過設置上傳文件最大大小的表單區域,即容許上傳文件的最大值,max_file_size(隱藏值域)的值來規定上傳文件的大小,其實通常別人能夠繞過這個值,因此安全起見,最好是在 php.ini 配置文件中配置 upload_max_filesize 選項,設定文件上傳的大小。默認 upload_max_filesize = 2M,即文件上傳的大小爲2M,若是你想上傳超過8M的文件,好比20M,你必須設定upload_max_filesize = 20M。服務器

第5種狀況:post_max_size 這個值也必須足夠大。這個變量也是一個同表單提交相關的變量,它限制的是客戶端經過POST方法進行一次表單提交時PHP程序所可以接收的最大數據量。通常狀況下,將此值的值設置的比 upload_max_filesize 略大便可,好比要上傳20MB的文件,此值能夠設置爲 21MB。網絡

第6種狀況:max_input_time 此變量能夠以秒爲單位對經過POST、GET以及PUT方式接收數據時間進行限制。若是應用程序所運行環境處在網絡比較慢的狀況下,則須要增長此值以增大接收數據所須要的時間,好比將此值設置爲 90秒。
max_input_time = 90
架構

第7種狀況:memory_limit 也必須足夠大,爲了不正在運行的腳本大量使用系統可用內存,PHP容許定義內存使用限額。經過memory_limit變量來指定單個腳本程序可使用的最大內存容量。變量memory_limit的值應當適當大於post_max_size的值。函數

第8種狀況:另外若是你的主機是 nginx 操做系統的話,若是以上操做都不行的話,記得在nginx 的配置文件裏面加上 client_max_body_size 20m; 這樣一句,即表示最大容許上傳20MB,具體根據本身的狀況來。個人nginx 配置文件的位置在 /usr/local/nginx/conf/nginx.conf。

 

上面就是我查到的,由於個人是Windows架構的,因此排除最後一種前面七項我也找了,嘗試了,可是發現然並卵,我愁死,甚至都換了一個PHP版本。

 

可是,可是,可是,就在這裏換好PHP和一些配置的環境的時候,涉及到要重啓Apache服務器,我就醒悟了,由於php.ini是涉及到Apache服務器的一個配置文件,是否是要重啓Apache?,,,懷着一顆忐忑不安的心,重啓了服務器,改回了mp3的文件類型,我去年買了個表啊,就是由於Apache服務器沒重啓致使的php.ini文件沒有生效的,唉,因此啊,之後搭建服務器的時候涉及到配置文件的,基本上都要重啓。千萬別像我同樣先換個服務環境。誒。

相關文章
相關標籤/搜索