6

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

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

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

我尝试设置此选项:

mysqli_options($cnx, MYSQLI_OPT_LOCAL_INFILE, 1);

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

我该如何纠正这个问题?

4

2 回答 2

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);
于 2013-05-24T18:43:08.887 回答
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”,则必须放弃open_basedir(至少对于 PHP 5.4.4,如 Debian Wheezy 中所示)

于 2014-04-01T11:58:50.483 回答