如何为PHP的CLI启用mysqli支持

时间:2015-02-14 00:17:55

标签: php linux apache mysqli

我正在使用Ubuntu LTS 14.04操作系统,我正在尝试在PHP CLI中测试我的PHP脚本,但是无论我的代码尝试连接到MySQL,只需使用......等命令即可...

$mysqli = mysqli_connect($host,$user,$password,$database);  

...,我收到以下错误:

Fatal error: Call to undefined function mysqli_connect()...  

我已审核/etc/php5/cli/php.ini/etc/php5/apache2/php.ini,但未发现任何差异。

我认为我必须为命令行界面(CLI)启用mysqli支持,但我不确定。

如何更正错误而不影响我当前的Apache php.ini / configuration / installation?

修改
根据评论,我在终端运行以下命令:

php --ini  

显示:

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

然后,我将/etc/php5/cli/php.ini复制到/usr/local/lib/php.ini

然后,我再次运行php --ini,显示:

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

然后,我再次从PHP CLI运行PHP脚本,并显示相同的错误。

2 个答案:

答案 0 :(得分:0)

test.php:

if (!extension_loaded('mysqli'))  {
        dl('mysqli.so');
}

在cli中运行它:

php test.php

os输出:

警告:dl():无法加载动态库'/ usr / local / lib / php / extensions / no-debug-non-zts-20131226 / mysqli'-/ usr / local / lib / php / extensions / no-debug-non-zts-20131226 / mysqli:无法打开共享对象文件:test.php中没有这样的文件或目录

您可以从任何地方找到并复制mysqli.so,例如:   / usr / local / lib / php / extensions / no-debug-non-zts-20131226 $ sudo cp /usr/lib/php5/20131226/mysqli.so ./mysqli.so

答案 1 :(得分:0)

  

调用未定义函数mysqli_connect()

表示未加载mysqli扩展。

  

我已经审查了/etc/php5/cli/php.ini和/etc/php5/apache2/php.ini,发现没有区别。

如果它们相同,我会感到非常惊讶。但是在这两种情况下,它们很可能都可以与通过软件包分发的扩展一起使用-即,包含用于加载mysqli的指令的ini文件,因此扩展名很可能位于其他位置,并且可以(或不可以)包含在这些文件中。

  

配置文件(php.ini)路径:/ usr / local / lib

您有科学怪人系统。您需要清理。使用发行版的打包应用程序或从tarball安装应用程序。除非您知道自己在做什么,否则不要使用tarball。除非您真的知道自己在做什么,否则不要混搭。

  • 删除tarball PHP文件
  • 重新安装Ubuntu PHP cli
  • 重新安装Ubuntu PHP mysqli扩展