Расширение mysqli не найдено windows

Обновлено: 03.07.2024

В данной статье приводится последовательность действия, которые необходимо выполнить для подключения к PHP расширения для работы с MySQL. Данная методика не зависит от используемых версий MySQL, PHP и Apache. Существующие отличия, в работе различных версий данных программ, как правило, указаны в примечаниях.

Процесс установки сервера Apache и подключения к нему PHP описывается в статьях:

По умолчанию, расширение для работы с MySQL (библиотека php_mysql.dll) не подключено к PHP и соответствующие функции недоступны. Для подключения библиотеки необходимо внести изменения в конфигурационный файл php.ini и скопировать дополнительные библиотеки в директорию c:/windows/system32.

1. Укажите PHP (Apache) где находится php.ini (только для Apache 2.x)

Примечание

Обратите внимание, что при записи пути используются прямые слеши /, что нехарактерно для Windows, в которой используются обратные слеши \\. Дело в том, что и Apache и PHP изначально были созданы для работы на unix-системах, где используются именно прямые слеши. Во избежание возможных трудно-диагностируемых проблем настоятельно рекомендуем использовать в конфигурационных файлах Apache и PHP прямые слеши в unix-формате.

Здесь подразумевается, что конфигурационный файл php.ini хранится в директории c:/php. Чтобы окончательно удостовериться, что Apache нашел конфигурационный файл php.ini выполните функцию phpinfo().

Вывод конфигурационной информации PHP

Найдите в полученных фиолетовых таблицах значение строки «Configuration File (php.ini) Path». В ней должен быть указан путь к используемому файлу php.ini, включая сам файл. Если в этой строке указана только директория, то это значит, что Apache не смог найти файл php.ini.

C:/php/php.ini // Правильно – php.ini найден и используется
C:/windows/ // Неправильно – php.ini не обнаружен

Примечание

В Apache более ранних версий директивы PHPIniDir не было и вследствие этого возникало очень много ошибок, связанных с неправильным расположением файла php.ini. Для Apache версии 1.3 php.ini обязательно должен быть расположен в системной директории Windows, обычно: c:/Windows. Использование директивы PHPIniDir в Apache версии 2 позволяет кардинально решить данную проблему.

После того, как Вы удостоверились, что Apache использует правильный php.ini можно приступать к его редактированию для подключения расширения работы с MySQL.

2. Настройте в PHP.INI директиву extension_dir

Директива extension_dir указывает директорию, в которой располагаются библиотеки расширений php, в том числе и библиотека php_mysql.dll. Если вы установили php в директорию c:/php, то библиотеки расширений, как правило, располагаются в поддиректорию ext (c:/php/ext). Проверьте так ли это и установите правильное значение директивы extension_dir.

3. Подключите расширение для работы с MySQL

Для этого найдите в php.ini строчку:

И снимите с нее символ комментария – точку с запятой.

4. Скопируйте дополнительную библиотеку libmysql.dll в c:/windows

Если PHP у Вас подключен к Apache в качестве модуля, то для подключения расширения MySQL необходимо скопировать дополнительную библиотеку libmysql.dll из директории c:/php в директорию c:/windows/system32. Если php подключен к Apache, как CGI-приложение, то копирования дополнительной библиотеки не требуется.

5. Перезагрузите Apache

Чтобы все внесенные изменения вступили в силу перезагрузите Apache.

6. Проверьте установку расширения

Чтобы удостовериться, что библиотека для работы с MySQL успешно подключилась к PHP выполните функцию phpinfo(). Просмотрите «фиолетовые таблицы» и найдите в них раздел с именем MySQL. Если такой раздел существует, то значит, что расширение успешно подключилось.

Проверка взаимодействия PHP c MySQL

1. Проверьте запущен ли у Вас сервер MySQL.

Перед тем, как приступить к проверке взаимодействия PHP c MySQL убедитесь, что сервер MySQL у Вас работает. Это можно сделать, открыв список служб Windows: «Пуск» | «Панель Управления» | «Администрирование» | «Службы». Найдите службу с именем MySQL и убедитесь, что она находится в состоянии работы (третий столбец таблицы).

Второй способ убедится, что сервер MySQL работает: нажмите кнопки «Crtl» + «Alt» + «Del» и на вкладке «Процессы» найдите процесс с именем mysqld.exe. Вместо процесса mysqld.exe также могут работать процессы: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Выполните проверочный php-скрипт

PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL

<?php
$dblocation = "127.0.0.1" ;
$dbname = "test" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = mysql_connect ( $dblocation , $dbuser , $dbpasswd );
if (! $dbcnx )
<
echo "<p>К сожалению, не доступен сервер mySQL</p>" ;
exit();
>
if (! mysql_select_db ( $dbname , $dbcnx ) )
<
echo "<p>К сожалению, не доступна база данных</p>" ;
exit();
>
$ver = mysql_query ( "SELECT VERSION()" );
if(! $ver )
<
echo "<p>Ошибка в запросе</p>" ;
exit();
>
echo mysql_result ( $ver , 0 );
?>

Если тест прошел успешно, то на экран будет выведен номер версии сервера MySQL. В противном случае, на экран будут выведены описания произошедших ошибок.

Ошибки при подключении расширения для работы с MySQL

Ошибки вида: Call to undefined function

Все ошибки содержащие фразу «Call to undefined function» указывают, на неподключенное расширение PHP. Если такие ошибки возникают при работы с фунциями MySQL, то это значит, что не подключена библиотека PHP для работы с MySQL – php_mysql.dll

Fatal error: Call to undefined function mysql_connect()
in C:\www\panel\htdocs\test.php on line 7

Для решения этой проблемы обратитесь к началу статьи.

Нет блока MySQL в phpinfo()

Если все сделано правильно, но расширение для работы с MySQL не подключается и даже отсутствует блок MySQL в выводе функции phpinfo(), то проверьте версию библиотеки libmysql.dll, расположенную в c:/windows/system32.

  1. Сравните размер библиотеки libmysql.dll, которая находится в c:/windows/system32 с размером одноименной библиотеки, которая установилась вместе с PHP. Они должны быть равны.
  2. Проведите библиотеки libmysql.dll по директории c:/windows и всем поддиректориям. Удалите все найденные дубли и оставьте только одну нужную библиотеку – ту, которая была скопирована из директории c:/php.

Примечание

Одноименная библиотека libmysql.dll поставляется также вместе с сервером MySQL. Однако, это разные библиотеки и если в директории c:/windows/system32 будет лежать именно библиотека от MySQL, то PHP не сможет подключить расширение. Библиотека libmysql.dll может быть автоматически скопирована в c:/windows/system32 при установке сервера MySQL. Наличие в системной директории библиотека от старой версии PHP также может стать препятствием.

Чистая страница проверочного скрипта

В качестве скрипта для проверки взаимодействия PHP c MySQL на нашем сайте часто используется скрипт, приведенный в листинге ниже. Его отличия от аналогичного php-скрипта, приведенного в начале статьи, – символы @ перед вызовом функций mysql_connect() и mysql_select_db(). Эти символы используются для подавления вывода ошибок в браузер. Их полезно применять на работающем сайте в Интернете чтобы предотвратить вывод в браузер конфиденциальной информации, но при отладке скриптов запрет вывода ошибок не нужен, т.к. он может затруднить диагностику проблемы.

PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL

<?php
$dblocation = "127.0.0.1" ;
$dbname = "test" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = @ mysql_connect ( $dblocation , $dbuser , $dbpasswd );
if (! $dbcnx )
<
echo "<p>К сожалению, не доступен сервер mySQL</p>" ;
exit();
>
if (!@ mysql_select_db ( $dbname , $dbcnx ) )
<
echo "<p>К сожалению, не доступна база данных</p>" ;
exit();
>
$ver = mysql_query ( "SELECT VERSION()" );
if(! $ver )
<
echo "<p>Ошибка в запросе</p>" ;
exit();
>
echo mysql_result ( $ver , 0 );
?>

Если в результате выполнения данного скрипта выводится чистая страница, то, как правило, это значит, что к PHP не подключена библиотека php_mysql.dll. Чтобы более точно диагностировать проблему проведите следующую последовательность действий.

  1. Убедитесь, что выполняются другие PHP-скрипты, не использующие базу данных MySQL.
  2. Уберите символ @ перед вызовом функции mysql_connect и mysql_select, который используется для подавления вывода ошибок в браузер. После этого в браузер будет выдана более полная информация об ошибках, что поможет решению проблемы.

Ошибка: Can't connect to MySQL server on '127.0.0.1' (10061)

Если при выполнении проверочного php-скрипта выдается ошибка подобная следующей:

Warning: mysql_connect() [function.mysql-connect]:
Can't connect to MySQL server on '127.0.0.1' (10061)
in C:\www\panel\htdocs\test.php on line 7

Это свидетельствует о том, что не работает сервер базы данных MySQL. Более точная диагностика этой проблемы приведена выше в пункте 1 подраздела «Проверка взаимодействия PHP c MySQL».

Ошибка: Access denied for user 'root'@'localhost' (using password: YES)

Наличие следующей ошибки:

Warning: mysql_connect() [function.mysql-connect]:
Access denied for user 'root'@'localhost' (using password: YES)
in C:\www\panel\htdocs\test.php on line 7

Свидетельствует о том, что Вы пытаетесь подключиться к базе данных MySQL c неправильным паролем. Проверьте значение переменной $dbpasswd в проверочном скрипте. По умолчанию сервер MySQL устанавливается с пустым паролем пользователя root. Если Вы самостоятельно установили пользователю root пароль, то пропишите его в переменную $dbpasswd проверочного скрипта.

У меня проблема с phpmyadmin на ubuntu 12.04. Я уже установил apache2, php5, mysql и phpmyadmin.

Скрипт phpinfo(); ничего не показывает о mysqli или расширении mysql.

Когда я пытаюсь запустить phpmyadmin, появляется эта ошибка:

В файле php.ini я раскомментировал строку extension=mysql.so , но не работает .

У кого-нибудь есть другое возможное решение?

Просто перезапустите apache2 и mysql:

apache2: sudo /etc/init.d/apache2 restart

mysql: sudo /etc/init.d/mysql restart

Затем обновите браузер, наслаждайтесь phpmyadmin :)

Была та же проблема, но в моем случае причиной было обновление версии Ubuntu и php - с 18.04 и php-7.2 до 20.04 и php-7.4.

Сервер Nginx был таким же, поэтому в моем / etc / nginx / sites-available / default были старые данные:

Я не мог заставить phpmyadmin работать с любыми изменениями php.ini и всеми ответами из этого потока, но в какой-то момент я открыл / etc / nginx / sites-available / default и понял, что у меня все еще есть старая версия php . Поэтому я просто изменил его на

И проблема исчезла, phpmyadmin волшебным образом начал работать без каких-либо жалоб на mysqli-файл. Я даже дважды проверил это, но да, вот как это работает - если у вас неправильная версия для php-fpm.sock в вашем конфигурационном файле nginx, ваш phpmyadmin не будет работать, но показанная причина будет 'Расширение mysqli отсутствует '

Для справки, моя система - Ubuntu Server 20.04, и ни одно из решений здесь не сработало. Я установил PHP 7.4, и мне пришлось отредактировать enter code here / etc / php / 7.4 / apache2 / php.ini`.

В нем найдите ;extension=mysqli , раскомментируйте и измените mysqli на mysqlnd , чтобы он выглядел так extension=mysqlnd . Я пробовал использовать mysqli , но столкнулся с той же ошибкой, как если бы я не включал его, но mysqlnd у меня работал.

Я столкнулся с той же ошибкой в ​​ubuntu, и то, что сработало для меня, редактировало 2 строки в /etc/php/7.3/apache2/php.ini

И дал mysqli.so расположение переменной extension , раскомментировав ее

Затем перезапустите службу, чтобы убедиться

Просто добавьте эту строку в свой php.ini, если вы используете XAMPP и т. Д., Также проверьте, есть ли она там, просто удалите; перед ним

И остановите и запустите apache и MySQL, он будет работать.

Поскольку у меня возникла эта проблема после обновления, я просто отключил Apache2-php5

И активировал php7

Надеюсь, это поможет кому-нибудь!

Это сработало для меня, создайте базу данных с помощью сценариев php и mysql, откройте консоль mysql и введите create user 'yourName'@'127.0.0.1', а затем введите предоставить все привилегии на . на 'yourName'@'127.0.0.1', затем откройте браузер, перейдите на localhost, и база данных должна быть создана, а затем перейдите на свою страницу phpmyadmin, и вы увидите, что она появляется там.

Для пользователей Ubuntu 20.04 с php-fpm я исправил проблему, добавив полный путь в php conf:

Вам нужен модуль MySQLi. Эта ошибка обычно возникает при установке phpMyAdmin вручную.

Он вернет вас с.

Проверка extension_dir - одна из вещей, которые вы хотите проверять с помощью phpinfo (). В моем случае это было extension_dir = "./" по умолчанию, что было неправильно. Измените его на extension_dir = './ext/' или на место, где в настоящее время находятся все ваши DLL-файлы расширений.

Для пользователя ubuntu откройте свой терминал и введите следующую команду

После этого просто перезапустите apache2, набрав это

Обновите ваш браузер и наслаждайтесь phhmyadmin

Я решил эту проблему, отредактировав /usr/local/zend/etc/php.ini.

(нашел, выполнив netstat -nlp ¦ grep apache, затем strace -p somepid ¦ grep php.ini).

В конце файла я добавил:

Добавить без пути не получилось.

Потом после перезагрузки заработало.

Я столкнулся с той же проблемой и решил ее, выполнив следующие действия:

Сначала проверьте версии PHP. Если у вас несколько версий PHP. Предположим, у вас есть версии PHP, такие как php7.0, php7.1 и php 7.2, тогда

запустите эти команды

Для PHP7.0

Для PHP7.1

Для PHP7.2

Для PHP7.3

Отредактируйте ini-файл и найдите mysqli. Раскомментируйте строку, удалив ; для всех версий php

Для PHP7.0

Для PHP7.1

Для PHP7.2

Для PHP7.3

И последний перезапуск сервера apache

Казалось, это сработало за меня, но после этого мне пришлось переустановить php7.0 и phpmyadmin:

Надеюсь, это поможет!

Если вы запустите PHPMyAdmin на локальном хосте, раскомментируйте в файле /etc/php5/apache2/php.ini эту строку:

Попробуйте оба варианта, это работает для меня

Последние версии phpMyAdmin требуют расширения mysqli и больше не будут работать с mysql one (обратите внимание на дополнительный «i» в конце его имени).

Для PHP 5

Для PHP 7.3

Будет установлен пакет, содержащий как старый, так и новый, поэтому после все, что вам нужно сделать, это добавить

Я не могу найти инструкции по установке MySQLi на Mac. Чтобы быть ясным, MySQL обновлен, и я запускаю PHP 5. Как его установить? Откуда я вообще его взял? Спасибо за помощь. Я отдам свой голос и галочку тому, кто ответит!

MySQLi является частью PHP. Должен быть доступен пакет типа php-mysqli, или вы можете взять источник PHP и перекомпилировать, что mysqli включен. Возможно, вы уже установили его, но он сделан как модуль и отключен. Проверьте свой php.ini для extension=mysqli.so или аналогичные. это может быть прокомментировано, или .таким образом, файл присутствует в вашем каталоге расширений, но не связан с PHP через это расширение= директива.

используйте php-mysqlnd вместо php-mysql

в этой статье четко объясняется, как установить MySqli с EachApache. Мне это тоже подходит.

для установки mysqli с помощью EachApache:

войдите в WHM как пользователь "root".

либо поиск "EasyApache" или перейти к программному обеспечению > EasyApache

прокрутите вниз и выберите опцию сборки (ранее сохраненная конфигурация)

выберите версию Apache и нажмите "следующий шаг".

выберите версию PHP и нажмите "следующий шаг".

выберите Дополнительные опции в "списке коротких опций"

выберите " исчерпывающий список опций "и найдите"MySQL Improved extension"

нажмите "Сохранить и построить"

вот как я установил его на своей машине на базе Debian (ubuntu):

вы должны изменить два строки в вашем php.ini-файл (я использую windows для этого примера):

- первый касается расположения каталога расширений. См. ниже:

- второй касается самого расширения:

только изменение (раскомментирование) линии расширения было недостаточно для меня. Надеюсь, это поможет

Если вы используете Windows или Linux:
- Расширение MySQLi автоматически устанавливается в большинстве случаев, когда установлен пакет PHP & MySQL.

поскольку вы используете Mac, откройте терминал, и

найти php.ini и sudo открывают его, например, с помощью редактора nano

найти используйте control+w для поиска " mysqli.default_socket" и измените строку на

используйте control+x, а затем нажмите "y" и "return", чтобы сохранить файл. Перезапуск Aapche при необходимости.


Одна из распространенных ошибок, возникающих при установке WordPress на новый VPS, заключается в том, что в вашей установке PHP отсутствует ошибка расширения MySQL. Эта ошибка возникает, когда расширение MySQL не существует на VPS. По умолчанию у многих операторов нет этого расширения.

Если вы столкнулись с этой ошибкой во время работы над своим сайтом WordPress, вам не о чем беспокоиться. У этой ошибки много других причин. Многие пользователи WordPress сталкиваются с этой проблемой.

В нашей предыдущей статье мы обсуждали, как увеличить память PHP в WordPress.

Исправьте установку PHP, в которой отсутствует ошибка расширения MySQL

Как упоминалось выше, в этой статье мы представляем 5 методов исправления вашей установки PHP, в которой отсутствует ошибка расширения MySQL.

1. Проверьте и установите расширение PHP MySQL.

По умолчанию расширение PHP MySQL не существует для большинства системных операторов. PHP использует этот модуль для отправки команд SQL и получения их от MySQL.

Чтобы установить расширение PHP MySQL, вам необходимо создать файл info.php.

Для этого вам необходимо скачать Notepad ++ и запустить его. Скопируйте и вставьте приведенный ниже код и сохраните файл как info.php:

Загрузите сохраненный файл в корневой каталог.

Перейдите в службу поддержки MySQL. Если у вас установлен MySQL, его версия отображается рядом с версией Client API. Если вы не установили MySQL, выполните следующие действия:

Установите PHP MySQL на серверы, совместимые с RedHat или Ubuntu

В зависимости от вашей версии PHP выполните следующие команды. Помните, что приведенные ниже команды работают, только если ваш сервер совместим с RedHat.

Запустите Apache или PHP-FPM.

Перезапустите сервер и проверьте, исчезла ли ошибка.

2. Просмотрите конфигурацию каталога расширений MySQL.

Откройте файл info.php, созданный на предыдущем шаге. Найдите параметр «Загруженный файл конфигурации» и скопируйте его значение. Например:

Исправьте установку PHP, в которой отсутствует ошибка расширения MySQL

Теперь проверьте раздел «extension_dir». Убедитесь, что расширение PHP не пустое или у него правильный путь. Например:

Исправьте установку PHP, в которой отсутствует ошибка расширения MySQL

Сравните параметры «Загруженный файл конфигурации» и «extension_dir» друг с другом. Если ваше значение «extension_dir» отличается от пути к вашей версии PHP, обязательно исправьте его. Для этого введите правильный путь в вашем файле PHP.ini.

3. Убедитесь, что файлы MySQL.so и MySQL.DLL существуют.

Файл PHP.ini настроен на некоторых веб-сайтах. Этот файл не будет обновляться при обновлении PHP или переносе сервера. С другой стороны, в таких файлах, как PHP.ini, вы можете неправильно написать пути к каталогам расширений.

Лучшее решение этой проблемы – удалить строки ниже или преобразовать их в комментарии в файле PHP.ini:

4. Проверьте пакеты php-mysqlnd-ms на серверах Ubuntu.

Чтобы проверить наличие всех пакетов, содержащих MySQL, выполните следующую команду:

5. Проверьте конфигурацию PHP в suPHP_CinfigPath.

Персонализированные файлы PHP загружаются с помощью suPHP_CinfigPath. Однако эта возможность доступна для серверов с включенным suPHP.

Проверьте значения в PHP.ini и исправьте их.

Вывод

В этой статье мы обсудили, что в вашей установке PHP отсутствует ошибка расширения MySQL.

Читайте также: