Как подключить к php библиотеки mysql
Перейти к содержимому

Как подключить к php библиотеки mysql

  • автор:

Как подключить к php библиотеки mysql

Модуль mysqli был представлен с версией PHP 5.0.0. MySQL Native Driver был включён в PHP версии 5.3.0.

Установка для Linux

Большинство дистрибутивов Unix включает бинарные версии PHP, которые в дальнейшем могут быть установлены. Несмотря на то, что бинарные версии, как правило, собраны с включённой поддержкой модулей MySQL, может потребоваться установка дополнительных пакетов с библиотеками модулей. Убедитесь, что менеджер пакетов, идущий с выбранным дистрибутивом, позволяет установить такие пакеты.

К примеру, на Ubuntu пакет php5-mysql устанавливает модули ext/mysql, ext/mysqli, и pdo_mysql. В CentOS пакет php-mysql также устанавливает три этих модуля.

Конечно, вы всегда можете собрать PHP из исходного кода. Сборка PHP из исходного кода позволяет выделить только те модули MySQL (а также клиентские библиотеки для каждого из модулей), которые требуется использовать.

Рекомендуется использовать библиотеку MySQL Native Driver, так как она повышает производительность и даёт доступ к функциям, недоступным при использовании MySQL Client Library. Смотрите Что такое MySQL Native Driver в PHP? для ознакомления с возможностями MySQL Native Driver.

Под /path/to/mysql_config подразумевается расположение программы mysql_config , поставляемой вместе с MySQL Server.

Вспомогательная таблица времени компиляции mysqli

Версия PHP По умолчанию Опции настройки: mysqlnd Опции настройки: libmysqlclient Список изменений
5.4.x и выше mysqlnd —with-mysqli —with-mysqli=/path/to/mysql_config по умолчанию mysqlnd
5.3.x libmysqlclient —with-mysqli=mysqlnd —with-mysqli=/path/to/mysql_config mysqlnd поддерживается
5.0.x, 5.1.x, 5.2.x libmysqlclient Недоступно —with-mysqli=/path/to/mysql_config mysqlnd не поддерживается

Необходимо отметить, что существует возможность свободно перемешивать модули MySQL и клиентские библиотеки. Например, можно активировать модуль MySQL, позволяющий использовать MySQL Client Library (libmysqlclient), и при этом настроить модуль mysqli для использования MySQL Native Driver. Таким образом, возможны любые перестановки модулей и клиентских библиотек.

Установка для Windows

В Windows DLL php_mysqli.dll должен быть включён в php.ini .

Как и при включении любого модуля PHP (например, php_mysqli.dll ), директива PHP extension_dir должна устанавливать каталог, в котором находятся модули PHP. Смотрите также раздел о самостоятельной установке PHP в Windows. Пример значения extension_dir — c:\php\ext .

Замечание:

Если при запуске веб-сервера возникает ошибка, подобная следующей: «Unable to load dynamic library ‘./php_mysqli.dll'» , это происходит потому, что файл php_mysqli.dll не может быть найден системой.

User Contributed Notes

There are no user contributed notes for this page.

  • Установка и настройка
    • Требования
    • Установка
    • Настройка во время выполнения
    • Типы ресурсов

    Установка

    Для компиляции просто используйте опцию конфигурации —with-mysql[=DIR] , где необязательный параметр [DIR] указывает на директорию с установленным MySQL.

    Несмотря на то, что это расширение MySQL совместимо с MySQL 4.1.0 и выше, оно не поддерживает дополнительную функциональность, предоставляемую этими версиями. Для получения такой возможности воспользуйтесь расширением MySQLi.

    Если вы хотите установить расширение mysql совместно с mysqli, то для избежания каких-либо конфликтов необходимо использовать одну и ту же клиентскую библиотеку.

    Установка на Linux-системы

    Примечание: [DIR] является путем к файлам клиентской библиотеки MySQL (заголовкам и библиотекам), которые можно скачать с » MySQL.

    Таблица компиляции ext/mysql по версиям PHP

    PHP Версия По умолчанию Опции настройки: mysqlnd Опции настройки: libmysqlclient Список изменений
    4.x.x libmysqlclient Недоступно —without-mysql для отключения MySQL включен по умолчанию, клиентские библиотеки MySQL входят в поставку PHP
    5.0.x, 5.1.x, 5.2.x libmysqlclient Недоступно —with-mysql=[DIR] MySQL больше не включен по умолчанию, и клиентские библиотеки MySQL больше не входят в поставку PHP
    5.3.x libmysqlclient —with-mysql=mysqlnd —with-mysql=[DIR] Стал доступен mysqlnd
    5.4.x mysqlnd —with-mysql —with-mysql=[DIR] mysqlnd выбирается по умолчанию

    Установка на Windows-системы

    PHP 4

    PHP скомпилирован с поддержкой расширения MySQL.

    PHP 5.0.x, 5.1.x, 5.2.x

    Поддержка MySQL больше не включена по умолчанию, поэтому для ее включения необходимо подключить php_mysql.dll DLL внутри php.ini . Кроме этого, PHP понадобится доступ к клиентской библиотеке MySQL. Файл libmysql.dll поставляется в Windows дистрибутиве PHP, и для корректного общения PHP с MySQL, данный файл должен быть доступен в системном пути Windows PATH . О том как это сделать, смотрите FAQ «Как добавить мою PHP директорию в системный PATH на Windows?». Хотя копирование libmysql.dll в системную папку Windows также сработает (потому что системная папка находится по умолчанию в PATH ), это не рекомендуется.

    Как и при включении любого другого расширения PHP (в том числе и php_mysql.dll ), директива extension_dir должна указывать на директорию, содержащую PHP-расширения. Смотрите также Инструкции по ручной установке в Windows . Пример значения extension_dir для PHP 5: c:\php\ext

    Замечание:

    Если при старте веб-сервера происходит подобная ошибка: «Unable to load dynamic library ‘./php_mysql.dll'», («Невозможно подгрузить динамическую библиотеку ‘./php_mysql.dll'»), то это случается из-за того, что на вашей системе не может быть найдена php_mysql.dll и/или libmysql.dll .

    PHP 5.3.0+

    MySQL Native Driver включен по умолчанию. В том числе php_mysql.dll , но без требования и использования libmysql.dll .

    Замечания по установке MySQL

    Внимание

    Сбои в работе PHP могут иметь место при загрузке совместно этого расширения и расширения recode. За дополнительной информацией обращайтесь к разделу о расширении для recode.

    Замечание:

    Если вам требуется поддержка кодировок отличных от latin, (установленной по умолчанию), вам придётся установить внешнюю библиотеку libmysqlclient, скомпилированную с их поддержкой.

    Как подключить к php библиотеки mysql

    Автор: Голышев С.В. (glsv)
    e-mail: glsv@yandex.ru

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

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

    • Установка Apache2.2 и PHP-5.1.4
    • Установка Apache, PHP, MySQL

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

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

    Если вы используете Apache версии 2 и выше, то обязательно добавьте в конфигурационный файл Apache (httpd.conf) директиву PHPIniDir, которая позволяет точно указать месторасположение файла php.ini. После добавления директивы перезагрузите Apache и удостоверьтесь, что запуск прошел успешно.

    Примечание

    Обратите внимание, что при записи пути используются прямые слеши /, что нехарактерно для 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

    $dblocation = «127.0.0.1» ;
    $dbname = «test» ;
    $dbuser = «root» ;
    $dbpasswd = «» ;

    $dbcnx = mysql_connect ( $dblocation , $dbuser , $dbpasswd );
    if (! $dbcnx )
    <
    echo «

    К сожалению, не доступен сервер mySQL

    » ;
    exit();
    >
    if (! mysql_select_db ( $dbname , $dbcnx ) )
    <
    echo «

    К сожалению, не доступна база данных

    » ;
    exit();
    >
    $ver = mysql_query ( «SELECT VERSION()» );
    if(! $ver )
    <
    echo «

    Ошибка в запросе

    » ;
    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

    $dblocation = «127.0.0.1» ;
    $dbname = «test» ;
    $dbuser = «root» ;
    $dbpasswd = «» ;

    $dbcnx = @ mysql_connect ( $dblocation , $dbuser , $dbpasswd );
    if (! $dbcnx )
    <
    echo «

    К сожалению, не доступен сервер mySQL

    » ;
    exit();
    >
    if (!@ mysql_select_db ( $dbname , $dbcnx ) )
    <
    echo «

    К сожалению, не доступна база данных

    » ;
    exit();
    >
    $ver = mysql_query ( «SELECT VERSION()» );
    if(! $ver )
    <
    echo «

    Ошибка в запросе

    » ;
    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 проверочного скрипта.

    Как подключить к php библиотеки mysql

    Данный модуль устарел начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для этой функции:

    Для компиляции просто используйте опцию конфигурации —with-mysql[=DIR], где необязательный параметр [DIR] указывает на директорию с установленным MySQL.

    Несмотря на то, что модуль MySQL совместим с MySQL 4.1.0 и выше, он не поддерживает дополнительную функциональность, предоставляемую этими версиями. Для получения такой возможности воспользуйтесь модулем MySQLi.

    Если вы хотите установить модуль mysql совместно с mysqli, то для избежания каких-либо конфликтов необходимо использовать одну и ту же клиентскую библиотеку.

    Установка на Linux-системы

    Примечание: [DIR] является путём к файлам клиентской библиотеки MySQL (заголовкам и библиотекам), которые можно скачать с » MySQL.

    Таблица компиляции ext/mysql по версиям PHP

    PHP Версия По умолчанию Опции настройки: mysqlnd Опции настройки: libmysqlclient Список изменений
    4.x.x libmysqlclient Недоступно —without-mysql для отключения MySQL включён по умолчанию, клиентские библиотеки MySQL входят в поставку PHP
    5.0.x, 5.1.x, 5.2.x libmysqlclient Недоступно —with-mysql=[DIR] MySQL больше не включён по умолчанию, и клиентские библиотеки MySQL больше не входят в поставку PHP
    5.3.x libmysqlclient —with-mysql=mysqlnd —with-mysql=[DIR] Стал доступен mysqlnd
    5.4.x mysqlnd —with-mysql —with-mysql=[DIR] mysqlnd выбирается по умолчанию

    Установка на Windows-системы

    PHP 5.0.x, 5.1.x, 5.2.x

    Поддержка MySQL больше не включена по умолчанию, поэтому для её включения необходимо подключить php_mysql.dll DLL внутри php.ini . Кроме этого, PHP понадобится доступ к клиентской библиотеке MySQL. Файл libmysql.dll поставляется в Windows дистрибутиве PHP, и для корректного общения PHP с MySQL, данный файл должен быть доступен в системном пути Windows PATH . О том как это сделать, смотрите FAQ «Как добавить мою PHP директорию в системный PATH на Windows?». Хотя копирование libmysql.dll в системную папку Windows также сработает (потому что системная папка находится по умолчанию в PATH ), это не рекомендуется.

    Как и при включении любого другого модуля PHP (в том числе и php_mysql.dll ), директива extension_dir должна указывать на директорию, содержащую PHP-модули. Смотрите также Инструкции по ручной установке в Windows . Пример значения extension_dir для PHP 5: c:\php\ext

    Замечание:

    Если при старте веб-сервера происходит подобная ошибка: «Unable to load dynamic library ‘./php_mysql.dll'» , («Невозможно подгрузить динамическую библиотеку ‘./php_mysql.dll'»), то это случается из-за того, что на вашей системе не может быть найдена php_mysql.dll и/или libmysql.dll .

    PHP 5.3.0+

    MySQL Native Driver включён по умолчанию. В том числе php_mysql.dll , но без требования и использования libmysql.dll .

    Замечания по установке MySQL

    Внимание

    Сбои в работе PHP могут возникнуть при загрузке этого модуля вместе с модулем recode. За дополнительной информацией обращайтесь к разделу о модуле для recode.

    Замечание:

    Если вам требуется поддержка кодировок отличных от latin, (установленной по умолчанию), вам придётся установить внешнюю библиотеку libmysqlclient, скомпилированную с их поддержкой.

    User Contributed Notes 7 notes

    13 years ago

    I believe that this is happens especially with Windows 7. As far I I’ve been able to tell XP and Vista come with this line enabled, but windows 7 comments it out and notes that the DNS will handle this.

    15 years ago

    In windows systems, the same error «unable to load dynamic library php_mysql.dll» will happen, if there’s an old version of the file in the «windows\system32» folder.
    Either remove it or update it.

    13 years ago

    i’ve experienced a similar (if not the same) problem.

    to enable the mysql_. and mysqli_. funtionality, i opened the php.ini file to uncomment the following lines:
    ;extension=php_mysql.dll
    ;extension=php_mysqli.dll
    ;extension=php_pdo_mysql.dll

    but phpinfo() still stated that no mysql extensions were loaded.
    i tried the fixes and suggestions above with no success.
    so i invoked the windows shell and typed («Path» environment variable set to the PHP & MySQL directories):
    php.exe -m

    this returned the following error: «PHP Startup: Unable to load dynamic library ‘C:\php5\php_mysql.dll’ — Module not found.»

    this told me that PHP didn’t recognize what i thought was the extensions directory. it searched all other places first (sys-dir, workin’-dir, the MySQL «bin» dir because of the «Path» variable set, and even a curious directory «C:\php5» that doesn’t even exist on my mashine) but not the expected «ext» directory.

    so the fix was to go to «php.ini» again and uncomment the following line:
    ;extension_dir=»ext»

    this fixed it for me.
    so if module loading is done improperly, first of all check the «Path» environment variable and the «php.ini» file — especially the «extension_dir» config value — and check if all values are set to their correct values.

    hope this helps any1.

    11 years ago

    Could not install mysql, on windows, had several conflicts or bugs.

    In order to solve it:

    * Used the «libmysql.dll» provided by PHP zip files, not the one that comes with Mysql, the mysql file had to be moved or deleted from its folder. Put it on the «apache/bin» folder, altought some use it in «windows» folder.

    * Originally, moved «*mysql*.dll» files from its extension folder, and returned back.

    * enabled mysql driver extensions in the «php.ini» file, but also enabled some extensions, that seemed not to be required, but, it did, like «php_openssl.dll» or «php_pdo.dll» on an early version of php.

    Added the «PHPIniDir xxx»» to the «httpd.conf» apache config. file, where xxx is the path to the folder where the «php.ini» file is located, and make sure its the same.

    Be warned, that this fixes, may help or not, for your installation, since there are many ways to configure the same thing (to solve a problem).

    12 years ago

    I had problems when moving from a version of PHP that used the isapi dll to the fast cgi version. The script to register the script maps compained that there was already a script map in place.

    I went to the IIS control panel, right clicked on websites and removed the php association in the Home Directory | Configuration screen.

    However, the fastcgi script still complained about existing script map. Finally I tracked it down, I had to right click on Default Web Site and clear out the php mappings from there too.

    Then it all worked, except that for some strange reason, the php.ini file that gets picked up is the one from my old PHP directory, not the latest upgrade one. But this can be detected by running phpinfo which shows the loaded php.ini file so I knew which one to amend with the fastcgi options.

    Bit of a hassle to figure it all out but it does work in the end.

    14 years ago

    I have experienced exactly the same problem as flo_stefi at yahoo dot com below. It appears that instead of loading libmysql.dll that came with the PHP package, the PHP engine was loading libmySQL.dll located in MySQL’s bin directory, which was causing Apache to crash.

    I fixed the problem by renaming MySQL’s libmySQL.dll into libmySQL_renamed.dll. Now PHP loads the library that came with its package and everything works fine.

    12 years ago

    Please note that libmySQL.dll in MySQL bin directory should be renamed in order to use right library (that comes with PHP).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *