您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何解決php無法上傳大圖片的問題的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
php無法上傳大圖片的解決辦法:1、打開php.ini;2、查找post_max_size并設置為自己需要的值;3、確認“file_uploads = on”;4、設置一個有效目錄;5、設置允許上傳文件大小的最大值。
本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦
php無法上傳大文件完美解決方案
php.ini無法上傳大文件完美解決辦法
1、打開php.ini(打開方式就不用說了,百度一大堆)
2、查找post_max_size
表單提交最大數值,此項不是限制上傳單個文件的大小,而是針對整個表單的提交數據進行限制的
默認為8m,設置為自己需要的值,此參數建議要設置比upload_max_filesize大一些
3、查找file uploads
是否允許通過http上傳文件的開關,確認file_uploads = on
4、查找upload_tmp_dir
文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
如果系統報錯提示有“xxx臨時目錄xxx”的話,這個目錄就需要你來設置一個有效目錄,沒報錯就不用管
5、查找upload_max_filesize
允 許上傳文件大小的最大值,默認為2m,設置為自己需要的值此參數建議不要超過post_max_size值,因為它受控于post_max_size值 (就算upload_max_filesize設置了1g,而post_max_size只設置了2m時,大于2m的文件照樣傳不上去,因為它受控于 post_max_size值)
6、如果要上傳大于8m的文件,還需要對下面的參數也進行設置:
查找max_execution_time = 600 ;每個php頁面運行的最大時間值(秒),默認30秒
max_input_time = 600 ;每個php頁面接收數據所需的最大時間,默認60秒
memory_limit = 8m ;每個php頁面所需要的最大內存,默認8m
nginx法上傳大文件完美解決辦法
1.client_body_buffer_size 盡量設置的大點,這是基于速度的考慮,如果因為設置的過小,導致上傳的文件老要寫磁盤,那速度就太慢了。
2.client_body_temp_path 路徑要有可寫權限,這個是明顯的錯誤了。改正了就好
3.client_max_body_size 設置上傳文件的最大值,這個是基于安全的考慮,我們認為正常用戶不會或者基本不會上傳太大的文件。
可以設置為client_max_body_size 100m; 或者按照自己的業務來設置這個值。
例子
nginx的配置。
代碼如下:
cd /export/servers/nginx/conf/nginx.conf,在這個配置文件里面的server段里面的
location / { root html; index index.html index.htm; client_max_body_size 1000m; }
加上了client_max_body_size 字段,怎么重啟都不行。后來在總配置文件里面發現了分配置文件:
代碼如下:
sendfileon; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; include domains/*; #include domains/chat.local; #include domains/chat.erp.com; #include domains/support.chat.com; #include douains/chat.com; server { listen 80; server_name localhost;
于是找到了分配置文件,在分配置文件里面進行修改。分配置文件配置如下:
代碼如下:
server { listen 80; server_name chat.erp.360buy.com; # access_log /export/servers/nginx/logs/chat.erp.360buy.com; location / { proxy_pass; client_max_body_size 1000m; } }
用/export/servers/nginx/sbin/nginx -s reload重啟下,上傳文件的大小受限的問題就解決了。
分享下我的解決過程,希望對大家有幫助。
如果還是無法解決我們需要看看是不是php表單設置問題
這段代碼分為兩個文件,一個為upload.html,一個是upload.php
upload.html
代碼如下:
<form enctype=multipart/form-data action=upload.php method=post> <input type=hidden name=max_file_size value=100000> <input name=userfile type=file> <input type=submit value=上傳文件> </form>
其中,
請注意
這是一個標簽,我們要實現文件的上傳,必須指定為multipart/form-data,否則服務器將不知道要干什么。
值得注意的是文件upload.html中表單選項 max_file_size 的隱藏值域,通過設置其value(值)可以限制上載文件的大小。
max_file_size 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望于該值。實際上,php 設置中的上傳文件最大值,是不會失效的。但是最好還是在表單中加上 max_file_size,因為它可以避免用戶在花時間等待上傳大文件之后才發現該文件太大了的麻煩。
upload.php
代碼如下:
$f=&$http_post_files['myfile']; $dest_dir=’uploads’;//設定上傳目錄 $dest=$dest_dir.’/’.date(ymd)._.$f['name'];//設置文件名為日期加上文件名避免重復 $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//設定上傳的文件的屬性
或者
<?copy($_files[myfile][tmp_name],$_files[myfile][name]);?>
以上范例中 $_files 數組的內容如下所示。我們假設文件上傳字段的名稱為 userfile(名稱可隨意命名)
感謝各位的閱讀!關于“如何解決php無法上傳大圖片的問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。