You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

phpMyAdmin4.4.15.10导入CSV报#2000 LOAD DATA被禁用错误

问题根因

该报错是phpMyAdmin 4.4.15.10版本的安全修复代码引入的逻辑缺陷,和服务器PHP配置、MySQL配置无关——同环境下4.4.15.8版本导入正常,已经可以证明mysqli.allow_local_infile全局配置是符合要求的。
两个版本的核心差异在数据库连接逻辑:4.4.15.8及更早版本建立mysqli连接时,不会主动设置MYSQLI_OPT_LOCAL_INFILE连接选项,直接继承php.ini中的全局配置;4.4.15.10版本为了阻断任意文件读取的安全风险,在连接初始化阶段强制将MYSQLI_OPT_LOCAL_INFILE设为0(即禁用LOAD DATA LOCAL语句),但开发人员遗漏了「csv using load data」导入场景的适配:执行导入操作前没有临时开启该选项,直接触发mysqli扩展的内置拦截,返回#2000错误。
从提供的调用栈也能佐证:报错直接触发在mysqli_query调用阶段,语句还没发送到MySQL服务端,属于PHP扩展层的拦截,和MySQL服务端的local_infile参数无关。

可落地的修复方案
  • 源码修改修复:打开4.4.15.10版本的./libraries/dbi/DBIMysqli.class.php文件,找到mysqli连接实例化的代码段(connect方法内,new mysqli(...)或mysqli_real_connect(...)调用之后),新增一行配置:
$link->options(MYSQLI_OPT_LOCAL_INFILE, 1);

保存后清除phpMyAdmin的临时缓存,重新执行CSV导入即可恢复正常。

  • 无源码修改的临时方案1:导入CSV时不选择「csv using load data」导入格式,选择普通CSV格式导入,phpMyAdmin会在服务端解析CSV内容后逐行执行INSERT写入,不会触发LOAD DATA LOCAL的权限限制,缺点是大体积CSV的导入速度会明显变慢。
  • 无源码修改的临时方案2:直接回退phpMyAdmin版本到4.4.15.8,两个版本属于同大版本的小迭代,功能无本质差异,不会影响现有数据库管理操作。
验证方法

可以直接对比两个版本DBIMysqli.class.php文件的connect方法代码,能直观看到4.4.15.10版本新增的强制禁用MYSQLI_OPT_LOCAL_INFILE的代码段,和上述根因完全匹配。

内容的提问来源于stack exchange,提问作者Jl buhant - duvelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 04:12:24