我正在运行一个安装了 php 5.5.3 的 apache2 本地开发服务器。由于某种原因,我收到错误
Fatal error: Call to undefined function mysqli_stmt_get_result()
在我所有的页面上。我已经阅读了 get_result() 方法需要 MySQL native 驱动程序 (mysqlnd) 的 php 文档,但是在 MySQL 网站上它说“从 PHP 5.4 开始,mysqlnd 库是所有 PHP MySQL 的 php.net 编译时默认值扩展”。无论如何我都尝试安装 php5-mysqlnd 并且当我这样做时它会覆盖我以前的 mysql 和 mysqli conf 文件,导致我得到错误
Fatal error: Call to undefined function mysqli_connect()
当我重新安装 php5-mysql 时,它删除了 mysqlnd 包。我并不真正关心安装包我更想知道为什么 mysqlnd 在 PHP 5.5.3 中没有被识别为一个包,我该如何启用它?提前致谢!
运行 Ubuntu 13.10 的 Apache 2 服务器:
[~]$ php5 --version
PHP 5.5.3-1ubuntu2 (cli) (built: Oct 9 2013 14:49:12)
Copyright (c) 1997-2013 The PHP Group
[~]$ mysql --version
mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2
编辑:
我已经将扩展添加到位于/etc/php5/apache2/php.ini 的 php.ini 文件中。文件内容如下:
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
extension=/usr/lib/php5/20121212/curl.so
extension=/usr/lib/php5/20121212/json.so
extension=/usr/lib/php5/20121212/mysqli.so
extension=/usr/lib/php5/20121212/mysql.so
extension=/usr/lib/php5/20121212/mysqlnd.so
最佳答案
检查您的 php.ini
以检查 MySQLi 的扩展是否未注释。它应该看起来像的一个示例是:
extension=php_ldap.dll
;extension=php_mssql.dll
;extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll
如果它有一个 ;
然后删除它,将更改保存到 php.ini 并通过调用重新启动 apache:
/etc/init.d/apache restart
如果您不确定 php.ini 的位置,请创建一个简单的页面:
<?php
phpinfo();
?>
并检查行:
Loaded Configuration File: dir/to/php.ini
或者甚至运行 phpinfo();
开始并检查:
关于php - Mysqli_stmt_get_result 在 PHP 5.5.3 中返回 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897382/