首頁 >後端開發 >PHP問題 >php 無法上傳大圖片怎麼辦

php 無法上傳大圖片怎麼辦

藏色散人
藏色散人原創
2022-01-20 09:34:332202瀏覽

php無法上傳大圖片的解決方法:1、開啟php.ini;2、尋找post_max_size並設定為自己需要的值;3、確認「file_uploads = on」;4、設定一個有效目錄; 5、設定允許上傳檔案大小的最大值。

php 無法上傳大圖片怎麼辦

本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦

php 無法上傳大圖片怎麼辦?

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[&#39;myfile&#39;];
$dest_dir=’uploads’;//设定上传目录
$dest=$dest_dir.’/’.date(ymd)._.$f[&#39;name&#39;];//设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f[&#39;tmp_name&#39;],$dest);
chmod($dest, 0755);//设定上传的文件的属性

<?copy($_files[myfile][tmp_name],$_files[myfile][name]);?>

以上範例中 $_files 陣列的內容如下所示。我們假設檔案上傳欄位的名稱為 userfile(名稱可隨意命名)

推薦學習:《PHP影片教學

以上是php 無法上傳大圖片怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn