如何为 PHP 的 CLI 启用 mysqli 支持
How to enable mysqli support for PHP's CLI
我正在使用 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 脚本,并显示相同的错误。
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[=11 中没有此类文件或目录=]
您可以从任何地方找到并复制 mysqli.so,例如:
/usr/local/lib/php/extensions/no-debug-non-zts-20131226$ sudo cp /usr/lib/php5/20131226/mysqli.so ./mysqli.so
Call to undefined function mysqli_connect()
表示未加载 mysqli 扩展。
I've reviewed /etc/php5/cli/php.ini AND /etc/php5/apache2/php.ini and have found no difference.
如果它们相同,我会感到非常惊讶。但在这两种情况下,它们都可能被构造为与通过包分发的扩展一起工作——即包含加载 mysqli 指令的 ini 文件,因此扩展可能位于其他地方并包含(或不包含)在这些文件中。
Configuration File (php.ini) Path: /usr/local/lib
你有一个弗兰肯斯坦系统。你需要把它清理干净。使用发行版的打包应用程序或从 tarball 安装应用程序。除非您知道自己在做什么,否则不要使用 tarball。除非您真的知道自己在做什么,否则不要混合搭配。
- 删除 tarball PHP 个文件
- 重新安装 Ubuntu PHP cli
- 重新安装 Ubuntu PHP 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 脚本,并显示相同的错误。
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[=11 中没有此类文件或目录=]
您可以从任何地方找到并复制 mysqli.so,例如: /usr/local/lib/php/extensions/no-debug-non-zts-20131226$ sudo cp /usr/lib/php5/20131226/mysqli.so ./mysqli.so
Call to undefined function mysqli_connect()
表示未加载 mysqli 扩展。
I've reviewed /etc/php5/cli/php.ini AND /etc/php5/apache2/php.ini and have found no difference.
如果它们相同,我会感到非常惊讶。但在这两种情况下,它们都可能被构造为与通过包分发的扩展一起工作——即包含加载 mysqli 指令的 ini 文件,因此扩展可能位于其他地方并包含(或不包含)在这些文件中。
Configuration File (php.ini) Path: /usr/local/lib
你有一个弗兰肯斯坦系统。你需要把它清理干净。使用发行版的打包应用程序或从 tarball 安装应用程序。除非您知道自己在做什么,否则不要使用 tarball。除非您真的知道自己在做什么,否则不要混合搭配。
- 删除 tarball PHP 个文件
- 重新安装 Ubuntu PHP cli
- 重新安装 Ubuntu PHP mysqli 扩展