Я делаю учебное пособие и получаю эту ошибку:
Неустранимая ошибка: класс MySQLi не найден (ДЛИННЫЙ URL) в строке 8
Код в строке 8:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
Я видел в Интернете, что кто-то сказал, чтобы проверить, включен ли он в моем phpinfo (), но там не было ничего, указанного в разделе «mysqli».
Кроме того, я использую PHP версии 5.2.5.
Ответы:
Похоже, вам просто нужно установить MySQLi .
Если вы думаете, что сделали это, но проблема не исчезла, опубликуйте свою операционную систему и все, что может помочь в ее дальнейшей диагностике.
источник
sudo yum install php-mysqli
sudo yum install php56-mysqlnd.x86_64
(выберите ту, которая соответствует той версии php, которую вы установили)Вы можете проверить наличие библиотек 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 -y install php5-mysql php5-mysqlnd
чтобы получить и то, и другое. Это то, что вам не хватало, @Hermann Ingjaldsson?Если вы вызываете «new mysqli (..)» из класса, имеющего пространство имен, вы можете увидеть аналогичную ошибку
Fatal error: Class 'foo\bar\mysqli' not found in
. Способ исправить это - явно установить его в корневое пространство имен с предшествующей обратной косой чертой, например:<?php $mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
источник
Помимо раскомментирования расширения php_mysqli.dll в php.ini , также раскомментируйте директиву extension_dir в php.ini и укажите свое местоположение:
extension_dir = "C:\software\php\dist\ext"
Это заставило меня работать.
источник
./ext
каким относительным путем. И мне пришлось переименоватьphp.ini-development
вphp.ini
и раскомментируйте в этом файлеextension=php_mysqli.dll
. О боже, я не скучал по тебе, PHP.Моя ОС - Ubuntu . Я решил эту проблему, используя:
источник
Если вы используете Docker ...
Внутри php-контейнера RUN:
#docker-php-ext-install mysqli #apachectl restart
источник
Похоже, проблема с вашей установкой.
http://www.php.net/manual/en/mysqli.installation.php
источник
Как включить mysqli в php.ini
2-й (раскомментированный):include_path = "C:\php\includes"
3-й (раскомментируйте и отредактируйте конфиг):extension_dir = "ext"
Как загрузить файл php.ini
источник
Я думал, что смогу помочь кому-нибудь с той же проблемой, используя серверы Namesco. Я пытался решить эту проблему после перемещения базы данных с моего локального сервера на домашнем компьютере на namesco. Они не помогли, они сказали, что это проблема кодирования.
К сожалению, их статьи в поддержку были пустой тратой времени. Прочитав это, я перешел в интерфейс администратора с новым определением.
источник
Некоторые дистрибутивы (например, 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
источник
Я проверил все выше, и у меня не получилось,
Я нашел несколько шагов.
Я использовал 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
find extension_dirВ моем случае я должен установить
extension_dir = /usr/lib/php5/20121212
И перезапустите apache2:
/ect/init.d/apache2 restart
источник
ZIP-архив PHP включает большинство часто используемых расширений (* .dll в Windows, таких как 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:
источник
в Ubuntu:
источник
При новой установке PHP удалите
;
ранееextension_dir
в php.ini.источник
в Debian 10
источник
Для всех, кто использует docker, я столкнулся с этой проблемой и решил ее, используя свой собственный Dockerfile вместо изображения php: fpm:
FROM php:fpm RUN docker-php-ext-install mysqli
источник
Я нашел решение этой проблемы после долгой процедуры анализа. После правильного тестирования моей установки php с функциями командной строки я обнаружил, что php работает хорошо и может работать с базой данных mysql. Кстати. вы можете запускать файлы кода с кодом php с помощью команды php -f filename.php
Итак, я понял, что что-то не так с Apache.
Я создал файл с функцией phpinfo () внутри.
Здесь я увидел, что в строке
Loaded Configuration File
мой файл конфигурации не был загружен, вместо этого был упомянут (нет).
Наконец, я нашел в конфигурации 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.
источник
установить phpXX-расширение на PHP. В моем случае с FreeBSD:
источник
Я использую xampp, и моя проблема была исправлена после переименования:
extension_dir = "ext"
к
extension_dir = "C:\xampp\php\ext"
PS: Не забудьте перезапустить apache после внесения этого изменения!
источник
В php.ini:
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Убедитесь, что версия PHP верна.
источник
;extension=mysqli
;
символif (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { echo 'We don\'t have mysqli!!!'; } else { echo 'mysqli is installed'; }
источник
<?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()); } } } ?>
источник