必须用phpinfo()查Loaded Configuration File路径才准确,它才是Apache实际加载的php.ini;若显示(none)则PHP未加载任何配置文件,需检查PHP-FPM或Apache模块配置。

确认当前生效的 php.ini 路径
很多人改完配置没效果,是因为改错了文件——LAMP 环境下 Apache 加载的 php.ini 和 CLI(命令行)用的往往不是同一个。直接编辑 /etc/php/8.2/apache2/php.ini 或 /usr/local/php/etc/php.ini 不一定管用。
最可靠的方法:在 phpMyAdmin 页面右上角点「其他」→「PHP 信息」,或新建一个 info.php 文件,内容为 <?php phpinfo(); ?>,访问后搜索 Loaded Configuration File 这一行,它显示的路径才是 Apache 实际读取的配置文件。
- 如果该行显示
none,说明 PHP 没有加载任何php.ini,需检查 Apache 的php_admin_value配置或 PHP-FPM 的 pool 设置 - 改错文件(比如只改了 CLI 的
php.ini)会导致上传限制完全没变,但页面仍显示“文件太大”
必须同步修改的三个 php.ini 参数
只调大 upload_max_filesize 是最常见错误。PHP 表单上传受三重叠加限制,缺一不可:
-
upload_max_filesize = 500M:单个文件上限,必须 ≥ 你要导入的 .sql 文件大小 -
post_max_size = 512M:整个 POST 请求体上限,必须 ≥upload_max_filesize(建议多留 10–20M 余量,因表单还有隐藏字段) -
memory_limit = 512M:PHP 脚本可用内存,导入时解析 SQL 会大量占用内存;设太小会报Allowed memory size exhausted,而不是上传失败
注意:单位写 M(如 500M),别写 MB、mb 或带空格,PHP 解析器不认。
立即学习“PHP免费学习笔记(深入)”;
绕过超时中断的关键执行参数
上传成功 ≠ 导入成功。phpMyAdmin 解析并逐条执行大型 SQL 文件可能耗时很久,超时就会中断,现象是页面卡住、空白,或报 Maximum execution time of 30 seconds exceeded。
-
max_execution_time = 0:设为 0 表示不限制(开发环境可用);生产环境建议设为600(10 分钟) -
max_input_time = 600:控制 PHP 接收全部 POST 数据的时间,尤其对慢网络或几百 MB 文件很关键;默认常为 60,不够用
这两个值如果没调,即使文件顺利上传,后续解析阶段也会被杀掉进程,用户看到的只是“没反应”或 500 错误,容易误判为上传问题。
config.inc.php 中的 $cfg['MaxImportFileSize'] 是假开关
网上很多教程让你在 phpMyAdmin 的 config.inc.php 里加这行:$cfg['MaxImportFileSize'] = 10000000;——它只影响界面上显示的“最大允许值”,**完全不改变底层 PHP 限制**。
你设成 1G,界面可能显示“最大 1GB”,但只要 php.ini 里 post_max_size 是 8M,上传请求在 Apache+PHP 层就被拦截了,phpMyAdmin 根本收不到文件。
真正有效的配置只在 php.ini(或 PHP-FPM pool、Apache .htaccess 中的 php_value),改完必须重启 Apache:sudo systemctl restart apache2(Debian/Ubuntu)或 sudo systemctl restart httpd(CentOS/RHEL)。
复杂点在于:有些 LAMP 套件(如宝塔、AMH)会把 PHP 配置拆到多个文件,或通过面板覆盖参数;若改完仍无效,优先查 Loaded Configuration File 是否真被加载,再看有没有更高优先级的 php_admin_value 在 Apache vhost 或 PHP-FPM pool 中强行覆盖。



















