Расширение 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.
- Сравните размер библиотеки libmysql.dll, которая находится в c:/windows/system32 с размером одноименной библиотеки, которая установилась вместе с PHP. Они должны быть равны.
- Проведите библиотеки 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. Чтобы более точно диагностировать проблему проведите следующую последовательность действий.
- Убедитесь, что выполняются другие PHP-скрипты, не использующие базу данных MySQL.
- Уберите символ @ перед вызовом функции 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.
Как упоминалось выше, в этой статье мы представляем 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, созданный на предыдущем шаге. Найдите параметр «Загруженный файл конфигурации» и скопируйте его значение. Например:
Теперь проверьте раздел «extension_dir». Убедитесь, что расширение PHP не пустое или у него правильный путь. Например:
Сравните параметры «Загруженный файл конфигурации» и «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.
Читайте также: