Codeigniter: fatal error call to undefined functio

2019-01-17 22:34发布

I just changed my server and experience these errors below:

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:

Website is in Codeigniter. It works on one server very well and on the local machine too. But when I upload that website at the new server I have that errors. Of course I changed important parameters like database connection, base_url() etc.

I was suspicious about database, but I have created a new database and user etc. and changed connection info.

Why does this happen? It will be helpful to know if it is a bug at the server or at the website. Also when I create some index.html with some test code everything is fine.

11条回答
Animai°情兽
2楼-- · 2019-01-17 22:39

I just had this issue on a ubuntu16.04, php7.1 install with Codeigniter 3.

Solution was simple (if hard to find!)

sudo apt-get install php7.0-mysql

I realised that the mysql*.ini files where missing from the etc/php/7.1/mods-available directory. Not sure how it happened, but that worked for me.

If you use 7.2, simply type sudo apt-get install php7.2-mysql

查看更多
一夜七次
3楼-- · 2019-01-17 22:41

I suggest you do the following:

change:

'dbdriver' => 'mysqli',
'dbprefix' => '',

to:

'dbdriver' => 'mysql',
'dbprefix' => '',

in database.php file.

查看更多
smile是对你的礼貌
4楼-- · 2019-01-17 22:44

It is not a bug in your application, it is just a missing driver, so, you have couple of options...

Go to your php init and uncomment the following:

extension=php_mysqli.dll

If not, try installing it at your server, it varies depending on your distribution.

Try installing php5-mysqlnd

If you cannot do it by hosting restrictions then just move to mysql driver (wont need to change other configurations or queries in CodeIgniter or anything else...)

like this (at your config file)

$db['default']['dbdriver'] = 'mysql'; (you might have mysqli now)
查看更多
看我几分像从前
5楼-- · 2019-01-17 22:56

1、apt-get install (yum, compile install whatever) php5-mysqlnd extension.

2、if not work, make sure mysqli is loaded

    root@x19-ws07-1:/etc/php5/apache2# cat /proc/31682/maps | grep mysql

if is loaded, you can see:

    7f2cd3266000-7f2cd3285000 r-xp 00000000 fd:00 864561                     /usr/lib/php5/20131226/mysqli.so
    7f2cd69ef000-7f2cd6a2e000 r-xp 00000000 fd:00 864559                     /usr/lib/php5/20131226/mysqlnd.so

3、if not loaded use php --ini to find config file

    xxxx@xxxx:~$ php --ini
    Configuration File (php.ini) Path: /etc/php5/apache2
    Loaded Configuration File:         /etc/php5/apache2/php.ini
    Scan for additional .ini files in: /etc/php5/apache2/conf.d
    Additional .ini files parsed:      /etc/php5/apache2/conf.d/05-opcache.ini,
    /etc/php5/apache2/conf.d/20-mysqli.ini

4、if not config extension, config like this and remember restart your web server

    xxxx@xxxxx:~$ cat /etc/php5/apache2/conf.d/20-mysqli.ini
    ; configuration for php MySQL module
    ; priority=20
    extension=mysqli.so
查看更多
冷血范
6楼-- · 2019-01-17 22:59

If your webserver is running with a lower version of MySQL, then you will get this error as MySQLi is not supported in MySQL < 4.1.3

It is highly recommended to go with MySQLi instead of going back to MySQL extension.

More info on php.net

查看更多
▲ chillily
7楼-- · 2019-01-17 23:00

For me this was a missing line in 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.

查看更多
登录 后发表回答