【问题标题】:PHP MySQL used command not allowedPHP MySQL 使用的命令不允许
【发布时间】:2013-03-24 02:35:44
【问题描述】:

我正在尝试在 MySQL 中使用 LOAD DATA LOCAL INFILE 命令,但我在 PHP/Joomla 中不断收到错误提示:此 MySQL 版本不允许使用的命令

我花了很长时间在谷歌上搜索,但我看到的唯一建议是将 local-infile = 1 添加到我的 my.cnf 文件中(我已经在 [client]、[mysql] 中完成了, 和 [mysqld])。

此外,如果我从命令行从我的 Apache 服务器连接到 MySQL 服务器(所以不使用 PHP),我可以毫无问题地运行 LOAD DATA LOCAL(所以它不可能是权限问题)。

我还检查了 php.ini,果然,mysqli.allow_local_infile 设置为 'On'。

我在这里遗漏了什么吗? 您是否必须在 Joomla 中做一些特别的事情才能使其正常工作?

【问题讨论】:

  • 你是如何在 Joomla 中做到这一点的?你用的php代码是什么?
  • @DavidFritsch,这就是我所拥有的: $db = JFactory::getDBO(); $db->setQuery("LOAD DATA LOCAL INFILE '$path' INTO TABLE $table"); $db->query();
  • 您使用的是哪个版本的 PHP?我在使用 PHP 5.4.6-1ubuntu1.2 的 Ubuntu 12.10 上看到了同样的问题。这似乎是 PHP 中的一个错误:bugs.php.net/bug.php?id=55737&edit=3.
  • @MichaelHärtl,这些是我使用的版本。我确实认为这是 PHP 中的一个错误,所以我升级到 5.4.13,但这并没有解决问题。我目前正在将发行版切换到 CentOS,看看是否能解决我的问题。开始听起来像是 Ubuntu 和 PHP 的问题。

标签: php mysql ubuntu joomla


【解决方案1】:

我刚刚回答了一个类似的问题here,也许它可以帮助:

从 MySQL 5.0 升级到 5.5 后,我发现在 PHP 中创建连接时,我突然必须启用 LOCAL INFILE。

使用mysql:

mysql_connect(server,user,code,false,128); // 128 enables LOCAL INFILE
mysql_select_db(database);

使用mysqli:

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,在我的情况下,Joomla 用户缺乏 root 所拥有的权限;为 J 用户提供完全权限解决了它,但后来我的组件用于分发,所以我改为使用标准 .sql 文件并手动解析/创建它们。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 2012-09-30
      • 1970-01-01
      • 2020-02-25
      • 2013-08-28
      • 2014-06-09
      • 2014-11-10
      • 1970-01-01
      • 2011-11-10
      相关资源
      最近更新 更多