致命错误:未find类“MySQLi”
我正在做一个教程,并得到这个错误:
致命错误:在第8行找不到类'MySQLi'(LONG URL)
第8行的代码是:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
我在网上看到有人说是否在我的phpinfo()中打开了它,但是没有列出“mysqli”的内容。
另外,我正在运行PHP版本5.2.5
听起来就像你只需要安装MySQLi 。
如果你认为你已经这样做了,但仍然有问题,请发布你的操作系统和其他可能有用的东西。
你可以通过执行这个代码来检查mysqli库是否存在:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { echo 'We don\'t have mysqli!!!'; } else { echo 'Phew we have it!'; }
如果你在Ubuntu上运行:
sudo apt-get install php5-mysqlnd
如果您从名称空间的类中调用“new mysqli(..)”,则可能会看到类似的错误Fatal error: Class 'foo\bar\mysqli' not found in
。 解决这个问题的方法是显式地将它设置为根名称空间,并使用前面的反斜杠,如下所示:
<?php $mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
除了取消注释php.ini中的php_mysqli.dll扩展,还可以在php.ini中取消注释extension_dir指令并指定您的位置:
extension_dir = "C:\software\php\dist\ext"
这使它为我工作。
我的操作系统是Ubuntu 。 我解决了这个问题,使用:
sudo apt-get install php5-mysql
你可以使用手写的MYSQLi类 ,所以你不需要安装mysqli。 如果您不拥有服务器,这是唯一的解决scheme。
一些发行版(如Gentoo )支持PHP的多个安装,并且您必须确保您使用的是安装并启用了mysqli的版本。
在Gentoo上,我安装了一个新的PHP(启用了mysqli USE标志),但是我需要激活新版本的PHP(因为旧的必须已经缺lessmysqli):
# eselect php list apache2 [1] php5.3 * [2] php5.5 # eselect php set apache2 2 You have to run `/etc/init.d/apache2 restart' for the changes to take effect # /etc/init.d/apache2 restart
<?php /* If the error is due to calling mysqli in a class */ class dbconnect extends mysqli{ private $host = 'localhost'; private $user = 'root'; private $pass = ''; private $db = 'test'; public function __construct() { parent::__construct($this->host, $this->user, $this->pass, $this->db); if (mysqli_connect_error()) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } } } ?>
这解决了我最初的“找不到”的错误。 注意反斜杠,现在就像一个梦一样。 只有在使用命名空间时才需要,但现在谁不需要呢?
$ mysqli = new \ MySQLi($ db_server,$ db_user,$ db_pass,$ db_name)或die(mysqli_error());
我检查了以上所有内容,对我来说不起作用,
我发现了一些步骤。
我在Ubuntu 14.04上使用了PHP 5.5.9-1ubuntu4.17
首先检查文件夹
#ls /etc/php5/mods-available/ json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
如果它不包含mysqli.ini ,请阅读其他安装它的答案,
打开php.ini
findextension_dir
在我的情况下,我必须设置extension_dir = /usr/lib/php5/20121212
并重新启动apache2: /ect/init.d/apache2 restart
我想我可以用Namesco服务器帮助任何有同样问题的人。 我一直试图解决这个问题后,从家用电脑上的本地服务器移动到namesco数据库。 他们不会协助他们说这是一个编码问题。
- 但是,从CPANEl LINUX托pipe界面修复起来很简单。
- 点击PHP。
- 然后点击php模块,从预装模块列表中点击mysqli框。
- 然后点击保存。 (如果在另一台服务器上工作,则无需更改代码。)
不幸的是,他们的支持文章是浪费时间。 看完这个后,我去了一个新的决心pipe理界面。
谢谢大家。