MySQLd가 활성 드라이버인지 확인하는 방법
당연한 질문일 수도 있지만 확실히 하고 싶어요.
MySQLd가 액티브 드라이버인지 어떻게 알 수 있습니까?
PHP 5.3과 MySQL 5.1.37을 실행하고 있습니다.phpinfo() mysqlnd에는 표시되어 있습니다만, 이것만으로는 MySQLd를 사용하고 있는지 이전 드라이버를 사용하고 있는지 알 수 없습니다.
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 8.1 이후 작동하지 않습니다.
에 하고 있는 는, 「」를 참조해 .mysqli
이렇게 하면 효과가 있습니다.
<?php
$mysqlnd = function_exists('mysqli_fetch_all');
if ($mysqlnd) {
echo 'mysqlnd enabled!';
}
이 액티브한 「」인지 한다.PDO
MySQL PDO, MySQL PDO.
if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) {
echo 'PDO MySQLnd enabled!';
}
formysqli_fetch_all
것은 .mysqlnd
mysqli 확장이 유효하다고 표시됩니다.
는 MySQLi 입니다.mysql
PHP를 사용하다
mysql
" " " 입니다.mysqli
와 " " "를 참조해 주세요.PDO MySQL driver
는 각각 libmysqlclient 중 하나를 할 수 .
다음 코드:
<?php
$mysqlnd = function_exists('mysqli_fetch_all');
if ($mysqlnd) {
echo 'mysqlnd enabled!';
}
nothing은 컴파일installed로 되어 있지 mysqli는 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가 드라이버로 사용되는 경우에만 동작하는 3가지 추가 기능을 제공하기 때문입니다.
에는 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, mysql 및 pdo_mysql에 대해 각각 개별적으로 지정할 수 있습니다.
다음으로 mysqlnd에 대응하는3가지 설정 옵션을 나타냅니다.
--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]
mysql, mysqli do pdo_mysql 모클 、 " api api api API 전 " mysqlnd 5.0.5 - dev " 。
그래서 당신은 세 가지 경우 모두 mysqlnd를 사용하고 있는 것 같습니다.
PDO의 경우 MySQL 드라이버가 설치되어 있으며, 그 드라이버는 mysqlnd를 기준으로 컴파일됩니다.
이게 내가 찾던 거야
<?php
if (extension_loaded('mysqlnd')) {
}
?>
이 설정이 존재하는지 확인해 주세요.phpinfo()는 어떤 이유로 다른 ini 설정과 다르게 표현합니다.5.4에서는 동작하지만 5.3에서는 동작하지 않습니다.
ini_get('mysqlnd.debug') !== false
phpinfo()는 PHP 컴파일에 사용되는 "Configure 명령어"를 나열합니다.
다른 답변에서도 알 수 있듯이 mysqlnd는 php 설치/컴파일 프로세스 중 2가지 선택 항목 중 1개(기본값)입니다.
7.0.33용 phpinfo Configure 명령어는 다음과 같습니다.
'./configure' '--with-libdir=lib64' '--enable-bcmath' '--enable-dbase' '--enable-exif' '--enable-intl' '--enable-intl' '--enable-libxml' '--enable-do' string'rl' '--with-freetype-filename' '--with-gd' '--with-gmp' '--with-gmp' '--with-with-gmp' '--with-with-cerberos' '--with-mcrypt' '--with-mhash'-ql'-us'sock' '--with-mysqli=/usr/bin/usr_config' '--with-pdo-pgsql=/usr' '--with-pdo-sql=/usr' '--with-pdo-sqlite' '--with-pdo-spell-spell'
메모 --with-mysqli=/usr/bin/mysqi_config' '
및 --enable-mysqlnd' (이것에는 없습니다만, 5.6 php 빌드의 판독치)
--with-mysqli=는 libmysqlclient를 사용하고 있음을 의미하며 mysqlnd 대신 네이티브 드라이버를 사용하고 있습니다.
자세한 내용은 http://php.net/manual/en/mysqlinfo.library.choosing.php 를 참조해 주세요.
(이것이 오래되었다는 것은 알지만, 이 지식을 통해 몇 시간 동안 기술 지원에 대한 토론을 줄일 수 있었고, 저는 이것을 처음 보았습니다.)
언급URL : https://stackoverflow.com/questions/1475701/how-to-know-if-mysqlnd-is-the-active-driver
'source' 카테고리의 다른 글
matplotlib를 사용하면 눈금 레이블의 글꼴 크기를 줄일 수 있습니다. (0) | 2022.09.24 |
---|---|
$scope 사용.$190과 $190입니다.$on (0) | 2022.09.24 |
ipython의 모든 경고 숨기기 (0) | 2022.09.24 |
PHP의 session_unset()과 session_destroy()의 차이점은 무엇입니까? (0) | 2022.09.24 |
"\u00ed"와 같은 Unicode 이스케이프 시퀀스를 적절한 UTF-8 인코딩 문자로 디코딩하려면 어떻게 해야 합니까? (0) | 2022.09.24 |