php 컴파일시 Cannot find libmysqlclient_r 오류 발생처리

리눅스/PHP|2015. 1. 16. 10:28
반응형

작업환경)
* Pentium 820D / 1G / 250G / RHEL 4-2.6.20.7
* mysql 5.0.41 confugure 설정
./configure --prefix=/usr/local/mysql --with-charset=euckr
* apache 2.2.4 configure 설정
 ./configure --prefix=/usr/local/httpd2 --enable-mods-shared=most --enable-module=so --with-mpm=worker
* php 5.2.2 configure 설정
./configure --with-apxs2=/usr/local/httpd2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/httpd2/conf --with-exec-dir=/usr/local/httpd2/bin --enable-track-vars --enable-trans-sid
* 컴파일 순서 : mysql -> apache -> php
------------------------------------------------
mysql과 apache는 올바르게 컴파일되어 서비스가 제공 되었으나 php 컴파일이 올바르게 되지 않았습니다.
(중략)
configure: error: Cannot find libmysqlclient_r under /usr/local/mysql
Note that the MySQL client library is not bundled anymore!

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a    libmyisammrg.a    libmysqlclient.so.15    libmysys.a    libheap.a    
libmysqlclient.a    libmysqlclient.so.15.0.0    libvio.a    libmyisam.a  libmysqlclient.la  
libmysqlclient_r.so  libmysqlclient.so    libmystrings.a

원인)
libmysqlclient_r 이 mysql을 컴파일 할 때 생성되지 않아서 생기는 문제입니다.
Apache 가 Thread 모드로 설치되어있으나, MySQL 은 Thread Safe 옵션을 주지 않았기 때문입니다.
맨 처음 Apache 를 컴파일 할 때 --with-mpm=worker 옵션으로 MPM 방식을 Worker 로 지정하였습니다. Worker 방식의 경우 Thread 단위로 요청을 처리하지만 mysql 은 Thread 처리를 하도록 컴파일 되지 않았기 때문에 PHP 컴파일을 하면서 오류가 발생한 것입니다. 물론 Apache 컴파일시 prefork (기본값)으로 설치시에는 이런 문제가 발생하지 않습니다.

해결방안)
mysql 컴파일 시 다음 옵션을 추가해 봅니다.
--enable-thread-safe-client

# ./configure --prefix=/usr/local/mysql --with-charset=euckr --enable-thread-safe-client && make &&make install

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a    libmyisammrg.a     libmysqlclient_r.a   libmysqlclient_r.so.15      libmysqlclient.so.15      libmysys.a
libheap.a    libmysqlclient.a   libmysqlclient_r.la  libmysqlclient_r.so.15.0.0  libmysqlclient.so.15.0.0  libvio.a
libmyisam.a  libmysqlclient.la  libmysqlclient_r.so  libmysqlclient.so           libmystrings.a

mysql library 디렉토리에 libmysqlclient_r  가 올바르게 생성되었습니다. 

이제 php를 다시 컴파일 하면 됩니다.

 

[출처] 그런즉 선 줄로 생각하는 자는 넘어질까 조심하라 | 아스라다 (http://blog.naver.com/01191879872?Redirect=Log&logNo=10017203362)

반응형

댓글()