加载数据 本地文件禁止在...菲律宾比索

2022-08-30 11:15:31

我正在尝试使用将一些记录插入到表中。不幸的是,它不起作用。LOAD DATA INFILE

以下是一些细节

如果我使用这个指令:

LOAD DATA INFILE 'file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);

它使用MySQL客户端程序和PHP应用程序工作。这样,它将在我的MySQL安装的数据目录中查找文件。

现在,如果我尝试使用该选项执行指令,则仅当我使用mysql客户端时才有效,但不适用于PHP:LOCAL

LOAD DATA LOCAL INFILE 'path/to/file/file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);

再。。它适用于MySQL客户端,但不适用于PHP应用程序...我收到此错误:

LOAD DATA LOCAL INFILE forbidden in /path/to/my/application

我读到这个问题与编译PHP和使用mysqlnd有关。我正在使用PHP 5.3.8和MySQL 5.5.15,但我还没有找到解决方案。

其他信息:到目前为止,我发现的唯一帮助是一个开放的PHP错误


答案 1

http://php.net/manual/en/ref.pdo-mysql.php 查看文档。

基本上你需要:

PDO::MYSQL_ATTR_LOCAL_INFILE => true

在实例化时设置。

例:

    $conn = new \PDO("mysql:host=$server;dbname=$database;", "$user", "$password", array(
        PDO::MYSQL_ATTR_LOCAL_INFILE => true,
    ));

答案 2

今天有这个问题,并通过在php中设置以下内容来解决它.ini

mysqli.allow_local_infile = On

推荐