Intereting Posts
Есть ли лучший способ написать этот PHP-код? SOAP PHP разбор ошибок WSDL: не удалось загрузить внешний объект? неразрывное пространство utf-8 0xc2a0 и preg_replace странное поведение Проверьте тип файла загрузки из массива в PHP. Установить ограничение памяти в htaccess Не удалось подключиться к серверу MySQL с использованием PDO Получить схему базы данных с одним запросом? Помимо пробелов, что еще может вызывать ошибки «заголовки, уже отправленные» в PHP Изменить прокси-сервер tor по протоколу управления тоном Анатомия распределенной системы в PHP Сохранение пользовательского расширения файла в Internet Explorer при использовании PHP для отправки файла? Преобразование новой строки в отправленный текст в PHP Как я могу показать изображения вне корневого каталога в моем приложении php? Как получить корневой каталог в yii2 Веб-видео: диапазон байтов до времени

Как узнать, является ли MySQLnd активным драйвером?

Возможно, это очевидный вопрос, но я хочу быть уверенным.

Как я могу узнать, является ли MySQLnd активным драйвером?

Я запускаю PHP 5.3 и MySQL 5.1.37. В phpinfo () указан mysqlnd, но только с этим я не могу быть уверен, что я использую MySQLnd или старый драйвер …

Вывод вывода phpinfo ()

mysql MySQL Support enabled Active Persistent Links 0 Active Links 0 Client API version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ mysqli MysqlI Support enabled Client API library version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ Active Persistent Links 0 Inactive Persistent Links 0 Active Links 26 mysqlnd mysqlnd enabled Version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ PDO PDO support enabled PDO drivers mysql pdo_mysql PDO Driver for MySQL enabled Client API version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ 

Я использую PDO, и драйвер PDO говорит mysql …

Related of "Как узнать, является ли MySQLnd активным драйвером?"

Это должно сделать трюк:

 <?php $mysqlnd = function_exists('mysqli_fetch_all'); if ($mysqlnd) { echo 'mysqlnd enabled!'; } 

Чтобы определить, является ли его активным драйвером PDO, создайте объект MySQL PDO, а затем:

 if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) { echo 'PDO MySQLnd enabled!'; } 

Проверка mysqli_fetch_all самом деле не описывает, как вы используете mysqlnd . Скорее, это говорит о том, что расширение mysqli включено.

MySQLi – это просто обновленная версия расширения mysql которая была предоставлена ​​в более ранних версиях PHP.

Расширение mysql расширение mysqli и PDO MySQL driver могут быть индивидуально настроены для использования libmysqlclient или mysqlnd

Этот код:

 <?php $mysqlnd = function_exists('mysqli_fetch_all'); if ($mysqlnd) { echo 'mysqlnd enabled!'; } 

ничто не говорит о том, что у вас нет mysqli, скомпилированного / включенного / установленного, и может использовать более mysql расширение mysql .

Лучший способ проверить mysqli с mysqlnd vs mysql с помощью libmysqlclient – сделать это:

 <?php if (function_exists('mysql_connect')) { echo "- MySQL <b>is installed</b>.<br>"; } else { echo "- MySQL <b>is not</b> installed.<br>"; } if (function_exists('mysqli_connect')) { echo "- MySQLi <b>is installed</b>.<br>"; } else { echo "- MySQLi <b>is not installed</b>.<br>"; } if (function_exists('mysqli_get_client_stats')) { echo "- MySQLnd driver is being used.<br>"; } else { echo "- libmysqlclient driver is being used.<br>"; } 

Это работает, потому что mysqlnd предоставляет три дополнительные функции, которые работают только тогда, когда в качестве драйвера используется mysqlnd .

Наконец, проверка PDO должна иметь $pdo переменную $pdo .

 $dbHost = "localhost"; $dbUser = "root"; $dbPass = "password"; $dbName = "database"; $pdo = new PDO('mysql:host='.$dbHost.';dbname='.$dbName, $dbUser, $dbPass); if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) { echo '- PDO MySQLnd <b>is enabled</b>.<br>'; } else { echo '- PDO MySQLnd <b>is not enabled</b>.<br>'; } ?> 

Драйвер (libmysql или mysqlnd) выбирается во время компиляции, и каждый из этих двух может быть определен независимо для mysql, mysqli и pdo_mysql.

Вот три параметра конфигурации, которые соответствуют mysqlnd:

  --with-mysql[=DIR] Include MySQL support. DIR is the MySQL base directory. If mysqlnd is passed as DIR, the MySQL native driver will be used [/usr/local] --with-mysqli[=FILE] Include MySQLi support. FILE is the path to mysql_config. If mysqlnd is passed as FILE, the MySQL native driver will be used [mysql_config] --with-pdo-mysql[=DIR] PDO: MySQL support. DIR is the MySQL base directoy If mysqlnd is passed as DIR, the MySQL native native driver will be used [/usr/local] 

В вашем случае «версия клиентского API» является «mysqlnd 5.0.5-dev» для mysql, mysqli и pdo_mysql.

Таким образом, кажется, что вы используете mysqlnd в трех случаях.

В случае PDO у вас установлен драйвер MySQL, и этот компилируется на основе mysqlnd.

Это то, что я искал

 <?php if (extension_loaded('mysqlnd')) { } ?> 

Возможно, проверьте, существуют ли эти настройки ? По какой-то причине phpinfo () по-разному отличает их от других настроек ini. Работает на 5.4, не уверен в 5.3.

 ini_get('mysqlnd.debug') !== false