修改phpmyadmin不能導入大文件的限制
情景:我需要導入一張1.03GB的數據表,但是phpmyadmin導入文件默認為不能超過2M。因此需要修改phpmyadmin導入文件的大小限制。
1.phpmyadmin的導入也就是php完成文件上傳的過程,因此先修改配置文件php.ini的上傳相關參數:
1.1修改上傳文件大小
upload_max_filesize 最大上傳文件大小參數,默認為2M。修改成1500M,即upload_max_filesize = 1500M
post_max_size 允許POST的數據最大字節長度參數,默認為8M。修改成1500M,即post_max_size = 1500M
1.2修改php上傳環境(因為php上傳大文件時,頁面執行時間,占用內存會變高)
max_input_time php頁面接受數據最大時間參數。修改成300s,即max_input_time = 300
memory_limit php頁面占用的最大內存參數。修改成128M,即memory_limit = 128M
2.重新導入數據表,但是瀏覽器頁面出現"提示已重置"等錯誤信息,查看nginx錯誤日誌。
2019/02/25 14:23:10 [error] 26551#26551: *40 client intended to send too large body: 1109221482bytes,
client: 120.36.255.19, server: localhost, request: "POST /phpMyAdmin/import.php HTTP/1.1", host: "48.107.92.147"
2019/02/25 15:17:32 [error] 26664#26664: *3 upstream timed out (110: Connection timed out) while reading response header from upstream,
client: 120.36.255.19, server: localhost, request: "POST /phpMyAdmin/import.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "48.107.92.147"
即:一個是嘗試發送大數據包失敗,一個是連接超時。需要修改nginx配置文件nginx.conf
... http { ... client_max_body_size 1500M; #設置網頁上傳文件的最大值 proxy_connect_timeout 600; #10分鐘 proxy_read_timeout 600; #10分鐘 proxy_send_timeout 600; #10分鐘 ... server { ... error_log /data/wwwlogs/nginx.error.log error; ... } ... } ...
同時設置mysql接收文件的最大值:
SHOW VARIABLES LIKE "max_allowed_packet";
SET GLOBAL max_allowed_packet = 1024*1024*1500;
3.重新導入數據表,成功。
修改phpmyadmin不能導入大文件的限制