這篇文章給大家分享的是有關(guān)如何解決php無(wú)法上傳大圖片的問(wèn)題的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)建站專注于寶坻網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供寶坻營(yíng)銷型網(wǎng)站建設(shè),寶坻網(wǎng)站制作、寶坻網(wǎng)頁(yè)設(shè)計(jì)、寶坻網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造寶坻網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供寶坻網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
php無(wú)法上傳大圖片的解決辦法:1、打開(kāi)php.ini;2、查找post_max_size并設(shè)置為自己需要的值;3、確認(rèn)“file_uploads = on”;4、設(shè)置一個(gè)有效目錄;5、設(shè)置允許上傳文件大小的最大值。
本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php無(wú)法上傳大文件完美解決方案
php.ini無(wú)法上傳大文件完美解決辦法
1、打開(kāi)php.ini(打開(kāi)方式就不用說(shuō)了,百度一大堆)
2、查找post_max_size
表單提交最大數(shù)值,此項(xiàng)不是限制上傳單個(gè)文件的大小,而是針對(duì)整個(gè)表單的提交數(shù)據(jù)進(jìn)行限制的
默認(rèn)為8m,設(shè)置為自己需要的值,此參數(shù)建議要設(shè)置比upload_max_filesize大一些
3、查找file uploads
是否允許通過(guò)http上傳文件的開(kāi)關(guān),確認(rèn)file_uploads = on
4、查找upload_tmp_dir
文件上傳至服務(wù)器上存儲(chǔ)臨時(shí)文件的地方,如果沒(méi)指定就會(huì)用系統(tǒng)默認(rèn)的臨時(shí)文件夾
如果系統(tǒng)報(bào)錯(cuò)提示有“xxx臨時(shí)目錄xxx”的話,這個(gè)目錄就需要你來(lái)設(shè)置一個(gè)有效目錄,沒(méi)報(bào)錯(cuò)就不用管
5、查找upload_max_filesize
允 許上傳文件大小的最大值,默認(rèn)為2m,設(shè)置為自己需要的值此參數(shù)建議不要超過(guò)post_max_size值,因?yàn)樗芸赜趐ost_max_size值 (就算upload_max_filesize設(shè)置了1g,而post_max_size只設(shè)置了2m時(shí),大于2m的文件照樣傳不上去,因?yàn)樗芸赜?post_max_size值)
6、如果要上傳大于8m的文件,還需要對(duì)下面的參數(shù)也進(jìn)行設(shè)置:
查找max_execution_time = 600 ;每個(gè)php頁(yè)面運(yùn)行的最大時(shí)間值(秒),默認(rèn)30秒
max_input_time = 600 ;每個(gè)php頁(yè)面接收數(shù)據(jù)所需的最大時(shí)間,默認(rèn)60秒
memory_limit = 8m ;每個(gè)php頁(yè)面所需要的最大內(nèi)存,默認(rèn)8m
nginx法上傳大文件完美解決辦法
1.client_body_buffer_size 盡量設(shè)置的大點(diǎn),這是基于速度的考慮,如果因?yàn)樵O(shè)置的過(guò)小,導(dǎo)致上傳的文件老要寫磁盤,那速度就太慢了。
2.client_body_temp_path 路徑要有可寫權(quán)限,這個(gè)是明顯的錯(cuò)誤了。改正了就好
3.client_max_body_size 設(shè)置上傳文件的最大值,這個(gè)是基于安全的考慮,我們認(rèn)為正常用戶不會(huì)或者基本不會(huì)上傳太大的文件。
可以設(shè)置為client_max_body_size 100m; 或者按照自己的業(yè)務(wù)來(lái)設(shè)置這個(gè)值。
例子
nginx的配置。
代碼如下:
cd /export/servers/nginx/conf/nginx.conf,在這個(gè)配置文件里面的server段里面的
location / { root html; index index.html index.htm; client_max_body_size 1000m; }
加上了client_max_body_size 字段,怎么重啟都不行。后來(lái)在總配置文件里面發(fā)現(xiàn)了分配置文件:
代碼如下:
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;
于是找到了分配置文件,在分配置文件里面進(jìn)行修改。分配置文件配置如下:
代碼如下:
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重啟下,上傳文件的大小受限的問(wèn)題就解決了。
分享下我的解決過(guò)程,希望對(duì)大家有幫助。
如果還是無(wú)法解決我們需要看看是不是php表單設(shè)置問(wèn)題
這段代碼分為兩個(gè)文件,一個(gè)為upload.html,一個(gè)是upload.php
upload.html
代碼如下:
其中,
請(qǐng)注意
這是一個(gè)標(biāo)簽,我們要實(shí)現(xiàn)文件的上傳,必須指定為multipart/form-data,否則服務(wù)器將不知道要干什么。
值得注意的是文件upload.html中表單選項(xiàng) max_file_size 的隱藏值域,通過(guò)設(shè)置其value(值)可以限制上載文件的大小。
max_file_size 的值只是對(duì)瀏覽器的一個(gè)建議,實(shí)際上它可以被簡(jiǎn)單的繞過(guò)。因此不要把對(duì)瀏覽器的限制寄希望于該值。實(shí)際上,php 設(shè)置中的上傳文件最大值,是不會(huì)失效的。但是最好還是在表單中加上 max_file_size,因?yàn)樗梢员苊庥脩粼诨〞r(shí)間等待上傳大文件之后才發(fā)現(xiàn)該文件太大了的麻煩。
upload.php
代碼如下:
$f=&$http_post_files['myfile']; $dest_dir=’uploads’;//設(shè)定上傳目錄 $dest=$dest_dir.’/’.date(ymd)._.$f['name'];//設(shè)置文件名為日期加上文件名避免重復(fù) $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//設(shè)定上傳的文件的屬性
或者
以上范例中 $_files 數(shù)組的內(nèi)容如下所示。我們假設(shè)文件上傳字段的名稱為 userfile(名稱可隨意命名)
感謝各位的閱讀!關(guān)于“如何解決php無(wú)法上傳大圖片的問(wèn)題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!