헤더 및 클라이언트 라이브러리 부 버전 불일치
나는 (를 통해 데이터베이스에 연결을 시도 할 때마다 PHP에서 나는 다음과 같은 경고를 받고 있어요 mysql_connect
)
경고 : mysql_connect () : 헤더와 클라이언트 라이브러리 부 버전이 일치하지 않습니다. 헤더 : 50162 라이브러리 : 50524
내 php -i
출력에는 mysqli 아래에 다음 값이 나열되어 있습니다.
클라이언트 API 라이브러리 버전 => 5.5.24
클라이언트 API 헤더 버전 => 5.1.62
php5-mysql 및 php 업데이트를 시도했지만 이미 두 가지 모두 최신 버전입니다. 이 경고가 표시되지 않도록 헤더 버전을 업데이트하려면 어떻게해야합니까?
편집하다
내 MySQL 파일을 모두 최신 버전으로 업데이트해야합니다.
$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.
이전 버전 제거
$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 is not installed, so not removed
Package mysql-client-5.1 is not installed, so not removed
Package mysql-client-core-5.1 is not installed, so not removed
Package mysql-server-5.1 is not installed, so not removed
Package mysql-server-core-5.1 is not installed, so not removed
Package mysql-source-5.1 is not installed, so not removed
PHP는 MySQL 5.1로 컴파일되었지만 이제는 5.5.X 제품군의 mysql 라이브러리를 연결하고 있습니다. PHP를 MySQL 5.5로 컴파일 된 버전으로 업그레이드하거나 mysql 클라이언트 라이브러리를 5.1.x로 되돌려 야합니다.
MariaDB를 사용하고 있으며 비슷한 문제가 있습니다.
에서 MariaDB 사이트 ,하여 문제를 해결하는 것이 좋습니다
- PHP에서 mysqlnd 드라이버를 사용하도록 전환합니다 (권장 솔루션).
더 낮은 오류보고 수준으로 실행 :
$err_level = error_reporting(0); $conn = mysql_connect('params'); error_reporting($err_level);
- MariaDB 클라이언트 라이브러리로 PHP를 다시 컴파일합니다.
- MariaDB와 함께 원래 MySQL 클라이언트 라이브러리를 사용합니다.
Ubuntu에서 mysqlnd 드라이버를 사용하여 문제를 해결했습니다.
sudo apt-get install php5-mysqlnd
건배!
[업데이트 : 추가 정보]이 드라이버를 설치하면 정수 값을 문자열로 반환하는 PDO 문제도 해결됩니다. 유형을 정수로 유지하려면 mysqlInd를 설치 한 후 다음을 수행하십시오.
$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass,
array( PDO::ATTR_PERSISTENT => true));
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
새로운 MySQL 5.6 제품군의 경우 php5-mysql이 아닌 php5-mysqlnd를 설치해야합니다.
이 버전의 mysql 드라이버 제거
sudo apt-get remove php5-mysql
대신 이것을 설치하십시오
sudo apt-get install php5-mysqlnd
MySQL에서도 동일하게 작동합니다.
sudo apt-get install php5-mysqlnd
나는 MySQL에 대한 솔루션을 찾으려고이 스레드를 읽었으며 ken의 대답도 보았지만 MariaDB에 대한 솔루션을 무시하고 몇 시간을 낭비했습니다. MySQL에도 동일하게 적용될 수 있다는 것이 저에게는 분명하지 않았습니다. 이 게시물은 내가 잃어버린 몇 시간을 절약하기위한 것입니다.
이 오류의 근본 원인은 PHP가 얼마 전에 MySQL 클라이언트 라이브러리와 분리 되었기 때문입니다. 그래서 그 사람에 대해 PHP를 컴파일 (주로 리눅스의 이전 컴파일에)되어 일어나는 는 MySQL 클라이언트의 특정 빌드 이 패키지는 다음과 같이 표시됩니다에 CentOS에서 (업그레이드 (MySQL의 버전을 의미 관계가 설치된)이 아니라 mysqlclientXX
, 어디 XX
나타내는 패키지 번호). 이것은 또한 패키지 관리자가 MySQL의 하위 버전을 지원할 수 있도록합니다. 그것은 지저분한 방법이지만 PHP와 MySQL이 다른 라이센스를 사용하는 방법을 고려할 때 유일한 방법이었습니다.
MySQLND 는 더 이상 MySQL 클라이언트에 의존하지 않는 PHP 고유의 기본 드라이버 (ND)를 사용하여 문제를 해결합니다. 또한 사용중인 PHP 버전에 맞게 컴파일되었습니다. MySQLND가 PHP가 MySQL과 통신하도록 만든 다른 이유가 없다면 이것은 모든면에서 더 나은 솔루션입니다.
MySQLND를 설치할 수없는 경우 실제로 대부분의 경우이 오류를 무시해도됩니다. 그것은 무엇보다 FYI 통지에 불과합니다. 무섭게 들립니다.
MySQL 네이티브 드라이버 (mysqlnd) 를 사용하여 소스에서 PHP를 컴파일하려면 ,
cd /php/source/path
./configure <other-options> --with-mysql --with-mysqli --with-pdo-mysql
make clean # required if there was a previous make, which could cause various errors during make
make
make install
에서 /php/source/path/configure --help
.
--with-mysql=DIR Include MySQL support. DIR is the MySQL base
directory, if no DIR is passed or the value is
mysqlnd the MySQL native driver will be used
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
as FILE, the MySQL native driver will be used
--with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory
If no value or mysqlnd is passed as DIR, the
MySQL native driver will be used
이러한 옵션을 사용하여 하나 이상의 PHP MySQL 확장을 포함 할 수 있습니다.
이 옵션에 값이 전달되지 않거나 값이 인 mysqlnd
경우 MySQL 기본 드라이버가 사용됩니다.
내 wordpress 사이트에서 동일한 PHP warring이 있습니다 ...
Err: Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php on line 1515
Cause: I updated wp 4.2 to 4.5 version (PHP and MySql mismatch )
I changed wp-db.php on line 1515
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
to
if ( WP_DEBUG ) {
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
} else {
$this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
}
Its got without warring err on my wordpress site
If u had access cpanel or whm for domain web hosting ...
In cPanel, Go to "Softwares and services" tab, >> and then click "Select PHP Version" >> set your desired version of php...
Eg. Current PHP version:
PHP Version [5.2] ( list of 5.2, 5.3, 5.4, 5.5, 5.6 available php versions)
Warning: Changing php modules and php options via PHP Selector for native php version is impossible
I selected 5.6 php version, after that error cleared on my wordpress blog site...
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026
I solved the above error by just rebuilding my Apache:
cPanel Version 56.0 (build 25)
Apache Version 2.4.18
PHP Version 5.5.30
MySQL Version 10.0.26-MariaDB
I have this problems when use Percona/MySQL 5.6 and the php driver was compiled with 5.5 and php5-mysql is required for some apps, so I write a script to rebuild the drivers.
https://github.com/falcacibar/php5-mysql-rebuild
For WHM and cPanel, some versions need to explicty set mysqli to build.
Using WHM, under CENTOS 6.9 xen pv [dc] v68.0.27, one needed to rebuild Apache/PHP by looking at all options and select mysqli to build. The default was to build the deprecated mysql. Now the depreciation messages are gone and one is ready for future MySQL upgrades.
Changing PHP version from 5.6 to 5.5 Fixed it.
You have to go to control panel > CGI Script and change PHP version there.
참고URL : https://stackoverflow.com/questions/10759334/headers-and-client-library-minor-version-mismatch
'developer tip' 카테고리의 다른 글
asp.net Web Forms에서 Ninject 또는 DI를 어떻게 구현할 수 있습니까? (0) | 2020.10.07 |
---|---|
IntelliJ에서 마우스 블록 선택을 끄려면 어떻게합니까? (0) | 2020.10.06 |
JavaScript를 사용한 ASP.NET 포스트 백 (0) | 2020.10.06 |
Swift에서 '미확인 식별자 사용' (0) | 2020.10.06 |
네임 스페이스를 사용한 jQuery XML 구문 분석 (0) | 2020.10.06 |