Неустранимая ошибка: класс «MySQLi» не найден - PullRequest
80 голосов
/ 20 марта 2009

Я занимаюсь обучением и получаю эту ошибку:

Неустранимая ошибка: класс 'MySQLi' не найден (длинный URL) в строке 8

Код в строке 8:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());

Я видел в Интернете, кто-то сказал, чтобы посмотреть, включен ли он в моем phpinfo (), но там не было ничего, что указано в разделе "mysqli".

Также я использую PHP версии 5.2.5

Ответы [ 17 ]

0 голосов
/ 01 ноября 2018

Я нашел решение этой проблемы после долгой процедуры анализа. После надлежащего тестирования моей установки php с функциями командной строки я обнаружил, что php работает хорошо и может работать с базой данных mysql. Btw. Вы можете запускать code-файлы с php кодом с помощью команды php -f filename.php
Я понял, что с Apache что-то не так.
Я сделал файл только с функцией phpinfo () внутри.
Здесь я увидел, что в строке
Загруженный файл конфигурации
мой конфигурационный файл не был загружен, вместо этого было упомянуто (ни один).

Наконец, я нашел в конфигурации Apache запись
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>

Но я установил PHP 7, и поэтому Apache не смог загрузить файл php.ini, потому что для этого не было записи. Я добавил

<IfModule php7_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

и после перезапуска Apache все работает хорошо.

Эти блоки кода выше я нашел в моем файле httpd-xampp.conf. Пусть это где-то еще в вашей конфигурации.
В том же файле я изменил до настройки php 7 в качестве замены для версии php 5.

#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

Как видите, у меня установлен пакет xampp, но эта проблема была только на стороне Apache.

Так что я надеюсь, что это поможет кому-то решить эту проблему.

0 голосов
/ 25 июля 2018

в Ubuntu:

sudo apt-get install php-mysql
sudo service apache2 restart
0 голосов
/ 12 марта 2018

PHP zip включает большинство наиболее часто используемых расширений (* .dll в окнах, таких как php_mysqli.dll) в каталоге \ ext, однако они не включены по умолчанию. Возможно, вы получаете эту фатальную ошибку при попытке использовать MySQLi:

( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24

Чтобы включить расширения, откройте php.ini (может потребоваться сначала скопировать php.ini-development как php.ini) и откомментируйте (или добавьте) эти две строки:

extension_dir = "ext"

И любые конкретные расширения, за которые вы получаете фатальные ошибки, то есть для mysqli:

extension=mysqli
0 голосов
/ 18 июля 2016

Я проверил все выше, и у меня это не сработало,

Я нашел несколько шагов.

Я использовал PHP Версия 5.5.9-1ubuntu4.17 на Ubuntu 14.04

Сначала проверьте папку

#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 найти extension_dir

В моем случае я должен установить extension_dir = /usr/lib/php5/20121212

И перезапустите apache2: /ect/init.d/apache2 restart

0 голосов
/ 01 марта 2016

Это решило начальную ошибку 'not found' для меня. Обратите внимание на обратную косую черту, теперь работает как сон. Требуется только при использовании пространства имен, но кто этого не делает в настоящее время?

$ mysqli = new \ MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) или die (mysqli_error ());

0 голосов
/ 20 октября 2014
<?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());
            }
        }
    }
?>
0 голосов
/ 16 ноября 2013

Некоторые дистрибутивы (например, Gentoo ) поддерживают несколько установок PHP, и вы должны убедиться, что вы используете один из них с установленным и включенным mysqli.

В Gentoo я установил новый PHP (с включенным USE-флагом mysqli), но мне нужно было активировать новую версию PHP (поскольку в старой, должно быть, отсутствовал mysqli):

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...