我正在使用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脚本,并显示相同的错误。
答案 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。除非您真的知道自己在做什么,否则不要混搭。