linux+nginx+mysql+php系統修改文件上傳大小限制

linux+nginx+mysql+php系統修改文件上傳大小限制

    對於LNMP框架的一些網站,上傳文件大小會受到多個方面的限制,一個是nginx本身的限制,限制了客戶端上傳文件的大小,會報錯“413 Request Entity Too Large”;一個是php.ini文件中默認了多個地方的設置。

1.  在php.ini中,做如下修改:
① file_uploads = On
默認允許HTTP文件上傳,此選項必須設置爲On。
② upload_tmp_dir =
默認爲空
③ upload_max_filesize = 2M
默認upload_max_filesize = 2M,即文件上傳的大小爲2M,如果你想上傳超過8M的文件,比如20M,你必須設定upload_max_filesize = 20M。

④max_file_uploads = 20

個參數是php5.2.12及更新的版本中增加的一個參數,該參數是設置每次最大上傳文件數量(Maximum number of files that can be uploaded via a single request),超出該數量的文件將被丟棄。所以設置max_file_uploads的值爲你可能用到的最大文件數就可以成功解決這個問題了。

文件上傳限制最大默認設爲20,所以一次上傳最大就是20個文檔,所以超出20個就會出錯了。

post_max_size = 8M

修改php.ini配置文件中的post_max_size選項,其代表允許POST的數據最大字節長度,默認爲8M。如果POST數據超出限制,那麼$_POST和$_FILES將會爲空。要上傳大文件,你必須設定該選項值大於 upload_max_filesize指令的值,一般設定upload_max_filesize和post_max_size值相等。另外如果啓用了內存限制,那麼該值應當小於memory_limit選項的值。
max_execution_time
每個PHP頁面運行的最大時間值(秒),默認是30秒,改爲max_execution_time = 0,0表示沒有限制。在上傳大文件時,如果網速很慢,當超過一定的時間,會報腳本執行超過30秒的錯誤,這是因爲在php.ini配置文件中 max_execution_time配置參數的限制原因,其表示每個腳本最大允許執行時間(秒),0 表示沒有限制。你可以適當調整max_execution_time的值,不推薦設定爲0。

⑦max_input_time = 1000     

每個PHP頁面接收數據所需的最大時間,默認60秒,這也是每個腳本可以消耗的時間,單位是秒。

⑧memory_limit = 128M

每個PHP頁面所吃掉的最大內存,默認8M,也就是腳本運行最大消耗的內存,根據你的需求更改數值。

2. 重新加載PHP配置文件

lnmp的PHP是fast-cgi模式,是單獨的服務,所以要單獨重啓php。
/usr/local/php/sbin/php-fpm reload

3.在 nginx.conf中,做如下修改:         

client_max_body_size 35m;   

表示允許客戶端請求的最大單文件字節數。在nginx.conf文件中找到client_max_body_size,如果沒有就新增這條,後面的120m就是指定最大支持120M大小的文件。位置可以添加於http模塊或者標示是php頁面的location模塊都可以。

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php$ {
            root           /home/www/htdocs;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /home/www/htdocs$fastcgi_script_name;
           
include     fastcgi_params;
 
            client_max_body_size 35m;        #客戶端上傳文件大小設爲35M
            client_body_temp_path /home/www/nginx_temp;        #設置臨時目錄
        }

4. 重新加載Nginx配置文件

/usr/local/nginx/sbin/nginx -s reload



參考:

           http://www.111cn.net/sys/linux/61094.htm

           http://blog.sina.com.cn/s/blog_54d63a8b01017q9x.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章