1. 程式人生 > >修改phpmyadmin不能導入大文件的限制

修改phpmyadmin不能導入大文件的限制

allow color 文件上傳 time 就是 req ... -s send

情景:我需要導入一張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_execution_time php頁面執行最大時間參數。修改成300s,即max_excution_time = 300
  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: 1109221482
bytes,
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不能導入大文件的限制