虛擬主機或受限環境下,php.ini 的 upload_max_filesize 和 post_max_size 往往鎖死在 2MB,導致 phpMyAdmin 無法導入大體積 SQL 文件。無權修改配置、無 SSH 權限怎麼辦?phpMyAdmin 內建的 UploadDir 機制 完美繞過此限制。
phpMyAdmin 允許配置一個服務器端上傳目錄($cfg['UploadDir'])。將 SQL 文件通過 FTP/文件管理器上傳到該目錄,導入時從「服務器上載目錄」下拉選單選擇,**完全繞過 HTTP POST 上傳限制**,也不受 php.ini 大小限制影響。
在 phpMyAdmin 安裝根目錄下新建目錄,名稱任意(如 sql_uploads):
mkdir /path/to/phpmyadmin/sql_uploads chmod 755 /path/to/phpmyadmin/sql_uploads # 確保 Web 進程可讀寫
編輯 libraries/config.default.php(或 config.inc.php),搜索 $cfg['UploadDir'] 並修改:
$cfg['UploadDir'] = 'sql_uploads'; // 相對於 phpMyAdmin 根目錄 $cfg['SaveDir'] = ''; // 導出目錄,按需設置 $cfg['TempDir'] = './tmp'; // 臨時目錄,建議顯式指定並可寫> **注意**:若使用
config.inc.php(推薦,不會被升級覆蓋),請在該文件中覆蓋設置:
> $cfg['UploadDir'] = 'sql_uploads';
使用 FTP、SFTP、面板文件管理器等工具,將需導入的 .sql、.sql.gz、.sql.bz2 文件上傳至 sql_uploads/ 目錄。
系統會直接從服務器本地磁盤讀取文件並導入,**無大小限制、無超時風險、速度極快**。
.sql.gz 或 .sql.bz2,phpMyAdmin 會自動解壓導入,傳輸更快、佔用空間更小。www-data, nginx, apache),權限 755 或 775,否則下拉框為空或報錯「無法讀取目錄」。UploadDir 僅支持相對路徑,且限制在 phpMyAdmin 目錄樹下,防止目錄穿越攻擊。SET autocommit=0; SET foreign_key_checks=0; SET unique_checks=0;,結尾加 COMMIT;,可大幅提速 InnoDB 導入。mysql -u root -p db_name < huge.sql 仍是最快、最穩妥的方式。利用 phpMyAdmin 內建的 UploadDir 功能,**零配置修改、零權限要求、零代碼改動**,即可輕松突破 2MB 導入限制。這是虛擬主機用戶、無 root 權限開發者、快速遷移數據時的「隱藏神技」。下次再遇大 SQL 文件,別再傻傻改 php.ini 或求客服了——幾分鐘搞定,優雅下班。