"加载本地infile数据"命令不被允许

时间:2013-05-24 16:37:41

标签: php mysqli

我正在使用PHP mysqli库。每次我尝试运行LOAD DATA LOCAL INFILE命令时,mysqli都会抱怨消息

  

此MySQL版本不允许使用used命令

从MySQL终端运行命令(必须使用--local-infile = 1登录以使其正常工作)或PHPMyAdmin,我没有遇到同样的问题。只是我的PHP + mysqli代码遇到此错误。

我尝试设置此选项:

mysqli_options($cnx, MYSQLI_OPT_LOCAL_INFILE, 1);

在我加载数据之前,但仍然没有效果。

如何更正此问题?

2 个答案:

答案 0 :(得分:10)

有些事情可能是错的。请尝试以下方法:

添加到您的my.cnf:

[mysql]
local-infile=1

[mysqld]
local-infile=1

从PHP连接时启用本地infile

$conn = mysqli_init();
mysqli_options($conn, MYSQLI_OPT_LOCAL_INFILE, true);
mysqli_real_connect($conn,server,user,code,database);

答案 1 :(得分:1)

除了在mysql配置文件(/etc/mysql/my.cnf)中提到“local-infile = 1”之外,你可能还需要

[MySQLi]
mysqli.allow_local_infile = On

[MySQL]
mysql.allow_local_infile = On

在你的系统php.ini(/etc/php5/cgi/php.ini或类似的 - 本地php.ini将无法正常工作)

另一件大事 - 如果您在php.ini中使用“open_basedir”(无论有什么值),该功能将被静默禁用!因此,如果您正在使用“加载数据本地infile”(至少对于PHP 5.4.4,如Debian Wheezy中所见),您必须放弃 open_basedir