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이 표시됩니다.
이것은 트릭을 수행해야합니다.
<?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
확장을 사용하고있을 수 있습니다 .
mysqlnd를 사용하는 mysqli와 libmysqlclient를 사용하는 mysql을 확인하는 더 좋은 방법은 다음과 같이하는 것입니다.
<?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
변수를 먼저 정의 해야합니다 .
$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]
In your case, the "Client API version" is "mysqlnd 5.0.5-dev" for both mysql, mysqli, and pdo_mysql.
So it seems you ahre using mysqlnd in either three cases.
In the case of PDO, you have the MySQL driver installed -- and that one is compiled based on mysqlnd.
This is what I was looking for
<?php
if (extension_loaded('mysqlnd')) {
}
?>
Maybe check if these settings exist? phpinfo() renders them differently from other ini settings for some reason. Works for 5.4, not sure about 5.3.
ini_get('mysqlnd.debug') !== false
phpinfo() in the beginning lists the "Configure Command" used to compile PHP.
As they state in other answers mysqlnd is 1 (the default) of 2 choices during the php install/compile process.
My phpinfo Configure Command for 7.0.33 is:
'./configure' '--prefix=/opt/php70' '--with-libdir=lib64' '--enable-bcmath' '--enable-calendar' '--enable-dbase' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-intl' '--enable-libxml' '--enable-mbstring' '--enable-pdo' '--enable-soap' '--enable-sockets' '--enable-sqlite-utf8' '--enable-wddx' '--enable-zip' '--with-bz2' '--with-curl' '--with-freetype-dir' '--with-gd' '--with-gettext' '--with-gmp' '--with-imap' '--with-imap-ssl' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-mcrypt' '--with-mhash' '--with-mssql' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl' '--with-pdo-mysql=/usr' '--with-pdo-pgsql=/usr' '--with-pgsql=/usr' '--with-pdo-sqlite' '--with-png-dir' '--with-pspell' '--with-sqlite' '--with-system-tzdata' '--with-tidy' '--with-unixODBC' '--with-xmlrpc' '--with-xsl' '--with-zlib'
Note --with-mysqli=/usr/bin/mysql_config' '
and --enable-mysqlnd' ' (Not in this one but a readout on a 5.6 php build)
--with-mysqli= is pointing to a directory meaning it is using libmysqlclient If it was mysqlnd instead then it is using the native driver.
For more info on this http://php.net/manual/en/mysqlinfo.library.choosing.php
(I know this is way old however this knowledge would have saved me hours of tech support debate and I seen this first.)
ReferenceURL : https://stackoverflow.com/questions/1475701/how-to-know-if-mysqlnd-is-the-active-driver
'IT story' 카테고리의 다른 글
C #의 부분 인터페이스 (0) | 2021.01.06 |
---|---|
UIView의 clipsToBounds와 CALayer의 masksToBounds 사이의 관계는 어떻습니까? (0) | 2021.01.06 |
C #에서 내 자신의 예외를 어떻게 정의합니까? (0) | 2021.01.06 |
jquery-ui 대화 상자 : 대화 상자의 단추를 기본 작업으로 설정 (Enter 키) (0) | 2021.01.06 |
개미 빌드 스크립트에서 최신 git 커밋 해시를 찾는 방법 (0) | 2021.01.06 |