【问题标题】:Mysqli_stmt_get_result returning fatal error in PHP 5.5.3Mysqli_stmt_get_result 在 PHP 5.5.3 中返回致命错误
【发布时间】:2013-11-11 01:11:38
【问题描述】:

我正在运行安装了 php 5.5.3 的 apache2 本地开发服务器。由于某种原因,我收到了错误

Fatal error: Call to undefined function mysqli_stmt_get_result()

在我所有的页面上。我在 php 文档中读到 get_result() 方法需要 MySQL 本机驱动程序 (mysqlnd),但是在 MySQL 网站上它说“从 PHP 5.4 开始,mysqlnd 库是一个 php.net 编译时默认为所有 PHP MySQL扩展”。无论如何我已经尝试安装 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

【问题讨论】:

  • 您仍然需要启用mysqli extension

标签: php mysql mysqli


【解决方案1】:

检查您的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();
?>

并检查该行:

加载的配置文件:dir/to/php.ini

或者甚至运行phpinfo(); 开始并检查:

【讨论】:

  • 我已经在我的 php.ini 文件中启用了扩展。请参阅我的编辑以获取更多信息。
  • @lhasson 抱歉耽搁了,检查你的php错误日志,检查扩展目录/ext/*.*是否加载/提取了扩展
  • 在错误日志下我得到这个错误 - PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/mysqlnd.so' - /usr/lib/php5/20121212/mysqlnd.so: cannot open shared object file: No such file or directory in Unknown on line 0 我认为问题是当我 sudo apt-get install php5-mysqlnd 它返回 1 被删除和 1 安装。删除:“php5-mysql”并安装:“php5-mysqlnd”,这不是我想要的。
  • 那么mysqlnd.so还没有被计入扩展目录
  • @lhasson 这也是不言而喻的。我给出的示例 php.ini 不在我的本地开发机器(windows)*.so*.dll 文件的 Linux 替代品
猜你喜欢
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2017-02-24
  • 2014-06-27
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多