Codeigniter:致命错误调用未定义函数mysqli_init()

Bso*_*sos 14 mysqli codeigniter server

我刚刚更改了服务器并遇到以下错误:

Fatal error: Call to undefined function mysqli_init() in /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php on line 126
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php:126)

Filename: core/Common.php

Line Number: 564

Backtrace:

A PHP Error was encountered

Severity: Error

Message: Call to undefined function mysqli_init()

Filename: mysqli/mysqli_driver.php

Line Number: 126

Backtrace:
Run Code Online (Sandbox Code Playgroud)

网站在Codeigniter.它可以很好地在一台服务器上运行,也可以在本地机器上运行.但是,当我在新服务器上传该网站时,我有错误.当然我改变了重要的参数,如数据库连接,base_url()等.

我对数据库很怀疑,但我创建了一个新的数据库和用户等,并更改了连接信息.

为什么会这样?知道它是服务器上还是网站上的错误会很有帮助.另外,当我用一些测试代码创建一些index.html时,一切都很好.

jpg*_*z18 20

它不是你的应用程序中的错误,它只是一个缺少的驱动程序,所以,你有几个选项......

转到您的php init并取消注释以下内容:

extension=php_mysqli.dll
Run Code Online (Sandbox Code Playgroud)

如果没有,请尝试在您的服务器上安装它,具体取决于您的分发.

尝试安装 php5-mysqlnd

如果你不能通过托管限制来实现它,那么只需转移到mysql驱动程序(不需要在CodeIgniter或其他任何东西中更改其他配置或查询......)

像这样(在你的配置文件中)

$db['default']['dbdriver'] = 'mysql'; (you might have mysqli now)
Run Code Online (Sandbox Code Playgroud)


Jam*_*sBB 16

我只是在这个问题上ubuntu16.04,php7.1安装有Codeigniter 3.

解决方案很简单(如果很难找到!)

sudo apt-get install php7.0-mysql
Run Code Online (Sandbox Code Playgroud)

我意识到mysql*.ini目录中缺少的etc/php/7.1/mods-available文件.不确定它是怎么发生的,但这对我有用.

如果使用7.2,只需键入即可 sudo apt-get install php7.2-mysql


Cha*_*mie 6

这实际上不是 CodeIgniter 问题,而是 PHP 安装问题。

我已经在我的 Linux 服务器中安装了 PHP5.6,并且很难遵循使用 ff 命令的 googled 解决方案,以便在 PHP 中安装缺少的 mysqli_extension。

我尝试的是但返回警告消息:无法找到包 php5-mysqli

sudo apt-get install php5-mysqli
Run Code Online (Sandbox Code Playgroud)

但是,我的 php 版本是 5.6 所以我试过了

sudo apt-get install php5.6-mysqli
Run Code Online (Sandbox Code Playgroud)

然后它起作用了。


小智 6

用这个:

sudo apt-get install php7.*-mysqli
Run Code Online (Sandbox Code Playgroud)

要么

sudo phpenmod mysqli
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)


小智 0

对我来说这是php.ini中缺少的一行 that solved it, as I copied another php.ini file to my XAMPP installation. Worth checking if the line: "extension=php_mysqli.dll" exist (if running Windows, but this isn't applicable for OP, as it's a Linux system), or if the "extension_dir" exists and is correct.