컴퓨터 / Computer

PHP Warning: mysqli_connect(): Headers and client library minor versi…

PHP-logo.svg 






 PHP Warning:  mysqli_connect(): Headers and client library minor version mismatch. Headers:50173 Library:50312


사용중인 php와 mysql(혹은 mariadb) 사이에 버전이 일치하지 않아 위와 같이 오류 메시지를 낼때가 있다. 사실 웹 서버 동작에는 그리 지장이 없기 때문에 무시하고 지나갈 수도 있다. 그런데 웹 서버 로그보다 저 오류 로그가 더 크면 사실 걱정을 좀 해야 한다. 그리고 그런 상황에 처했으니 이를 어떻게든 해결해야 한다.


자료를 많이 검색해 봤는데, php 와 mysql을 연결할때 mysqli 대신에 mysqlnd(mysql native driver)를 쓰라고 나온다. 일반 사용자들이 무슨 힘이 있겠는가. 앞으로 계속 mysqlnd를 쓰라고 하니 쓸 수 밖에. 그런데 이게 yum을 통해서 설치하면 된다고 하는데 그게 또 잘 안된다. 왜 안되는가 살펴봤더니 아래와 같은 환경이어서 그렇더라.



 CentOS 6.x 

 php 5.3 이하 


mysql은 알아서 잘 업데이트가 되는데 php는 보통 OS 설치할때 한번 설치하면 웬만해서는 잘 바꾸지 않는다. 일단 제일 위 오류 메시지가 나오면 쉘에서 아래와 같이 입력해 보자.


 php -i | grep 'Client API' 


위 CentOS와 php 환경에서는 다음과 같이 나온다.


 Client API version => 5.3.12-MariaDB

 Client API library version => 5.3.12-MariaDB

 Client API header version => 5.1.73

 Client API version => 5.3.12-MariaDB



딱 봐도 Client API header version이 낮다. 저걸 바꿔 주려면 mysqlnd를 설치하는 수 밖에 없다.



1차 시도 


  yum erase php-mysql

  rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

  rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

  yum install php-mysqlnd


왜 1차 시도라고 썼겠는가. 저렇게 하면 설치가 안된다. yum이  php-mysqlnd를 찾지 못한다.


2차 시도 

  yum --enablerepo=remi,remi-test install php-mysqlnd


아. 2차 시도 시에는 php 5.4 버전이 설치된다! 이래도 되나? 어쨌건 성공적으로 설치했다. 그리고 중요한 마무리. 이렇게 설치를 했을 경우 mysql과 httpd(주로 apache)를 다시 시작해야 한다.


(그리고 phpmyadmin도 다시 설치해야 한다.)




Comments

미세모 미니 틈새 먼지제거 브러쉬 투명보호캡 포함 자동차 실내 청소솔
칠성상회
아톰)포트폴리오내지(A3/20매/R112)
칠성상회
스타렉스2열모기장 스타렉스모기장 스타렉스2열방충망
칠성상회
먼작귀 치이카와 복불복 지우개 랜덤 뽑기 (60개 1박스)
칠성상회