Codeigniter: фатальная ошибка при вызове функции undefined mysqli_init()

Я только что изменил свой сервер и испытал эти ошибки ниже:

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:

Веб-сайт находится в Codeigniter. Он работает на одном сервере очень хорошо и на локальной машине тоже. Но когда я загружаю этот сайт на новый сервер, у меня такие ошибки. Конечно, я изменил важные параметры, такие как подключение к базе данных, base_url() и т.д.

Я подозрительно относился к базе данных, но я создал новую базу данных и пользователей и т.д. и изменил информацию о подключении.

Почему это происходит? Будет полезно узнать, является ли это ошибкой на сервере или на веб-сайте. Также, когда я создаю некоторый index.html с некоторым тестовым кодом, все в порядке.

Ответ 1

Это не ошибка в вашем приложении, это просто отсутствующий драйвер, поэтому у вас есть пара опций...

Перейдите в php init и раскомментируйте следующее:

extension=php_mysqli.dll

Если нет, попробуйте установить его на свой сервер, это зависит от вашего дистрибутива.

Попробуйте установить php5-mysqlnd

Если вы не можете сделать это с помощью ограничений хостинга, просто перейдите к драйверу mysql (не нужно менять другие конфигурации или запросы в CodeIgniter или что-то еще...)

как это (в вашем файле конфигурации)

$db['default']['dbdriver'] = 'mysql'; (you might have mysqli now)

Ответ 2

У меня была эта проблема при установке ubuntu16.04, php7.1 с Codeigniter 3.

Решение было простым (если трудно найти!)

sudo apt-get install php7.0-mysql

Я понял, что файлы mysql*.ini отсутствуют в каталоге etc/php/7.1/mods-available. Не знаю, как это произошло, но это сработало для меня.

Если вы используете 7.2, просто введите sudo apt-get install php7.2-mysql

Ответ 3

На самом деле это не проблема CodeIgniter, а проблема с установкой PHP.

Я установил PHP5.6 на свой Linux-сервер и испытываю трудности с поисковыми решениями с помощью команды ff, чтобы установить отсутствующий mysqli_extension в PHP.

То, что я пробовал, но возвращает предупреждающее сообщение: Не удается найти пакет php5-mysqli

sudo apt-get install php5-mysqli

Однако моя версия php - 5.6, поэтому я попробовал

sudo apt-get install php5.6-mysqli

Затем он работает.

Ответ 4

Использовать этот:

sudo apt-get install php7.*-mysqli

или же

sudo phpenmod mysqli
sudo service apache2 restart

Ответ 5

Откройте папку, в которой вы установили PHP, Edit php.ini file
раскомментировать эту строку: extension=php_mysqli.dll

Ответ 6

Для меня это была недостающая строка в php.ini, которая решила его, так как я скопировал еще один файл php.ini на мой XAMPP монтаж. Стоит проверить, существует ли строка "extension=php_mysqli.dll" (если выполняется Windows, но это неприменимо для OP, так как это система Linux), или если "extension_dir" существует и является правильным.

Ответ 7

1, apt-get install (yum, compile install any) расширение php5-mysqlnd.

2, если не работает, убедитесь, что mysqli загружен

    [email protected]:/etc/php5/apache2# cat /proc/31682/maps | grep mysql

Если вы загрузили, вы можете увидеть:

    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, если не загружен, используйте php -ini для поиска файла конфигурации

    [email protected]:~$ 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, если не расширение конфигурации, выполните настройку, подобную этой, и запустите перезапуск веб-сервера

    [email protected]:~$ cat /etc/php5/apache2/conf.d/20-mysqli.ini
    ; configuration for php MySQL module
    ; priority=20
    extension=mysqli.so

Ответ 8

В Linux вы можете установить расширение драйвера MySQL.

sudo apt-get install php-mysql

В Windows с XAMPP драйвер уже сохранен в каталоге ext, но вам нужно включить его в php.ini. Вы должны раскомментировать эту строку:

extension=php_mysqli.dll

Вам также необходимо проверить расположение каталога расширений в php.ini. Я использую объявление абсолютного пути (не относительного пути), чтобы оно работало.

extension_dir="your\absolute\path\to\xampp\php\ext"

Например,

extension_dir="C:\xampp\php\ext"

Ответ 9

Я попробовал, прокомментирую ниже строку в файле /etc/php/cli/php.ini.

extension=php_mysqli.dll

Я использую Ubuntu 16.04 для экземпляров AWS-EC2 и PHP 7.0. Это решило мою проблему.

Ответ 10

В моем случае с использованием Windows у меня были все необходимые расширения без комментариев, но они не загружались. Затем я проверил переменную каталога расширений в php.ini, и это было как "ext", но потом я вспомнил, что раньше у меня была похожая проблема. Так что я сделал в основном явный каталог. Что-то вроде этого:

extension_dir = "C:\php\ext"

Конечно, конкретный каталог ext полностью зависит от ваших настроек и местоположений.

После обновления файла php.ini вам просто нужно перезапустить Apache, чтобы применить изменения.

Если вы установили Apache вручную (не используя предварительно упакованные решения, такие как XAMPP или WAMPP), вам просто нужно использовать эти команды либо в командной строке, либо в Powershell с правами администратора.

net stop Apache2.4

net start Apache2.4

Ответ 11

Проблема в том, что расширение php mysql может не быть установлено, если вы используете php 7, просто введите приведенную ниже команду и установите расширение,

sudo apt-get install php-mysql

Ответ 12

Если ваш веб-сервер работает с более низкой версией MySQL, вы получите эту ошибку, поскольку MySQLi не поддерживается в MySQL < 4.1.3

Настоятельно рекомендуется использовать MySQLi вместо возврата к расширению MySQL.

Дополнительная информация о php.net

Ответ 13

Я предлагаю вам сделать следующее:

менять:

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

чтобы:

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

в файле database.php.