저번 글처럼 apache와 php를 설치한 후 phpMyAdmin을 설치했는데 아래쪽에 mysqli와 mcrypt를 찾을 수 없다는 경고가 떠서 내 신경을 긁었다. 알아보니 빌드할때 configure 에 --with-mysqli --with-mcrypt 이런 옵션을 붙인 후 빌드를 해야 하는 것이었다. 근데 이제와서 php를 다시 빌드할 수는 없잖아? 그래서 구글링을 열심해 해봤다.

우선 php소스파일이 있던 곳으로 이동해 ext/(모듈명) 디렉토리로 이동한다.
mysqli를 예로 들면
$ cd ext/mysqli

php관련 실행파일이 있는곳의 phpize라는 실행파일을 찾아 실행한다.
php빌드할때 prefix를 줬다면 그 경로의 bin에 있을 가능성이 높다. 나갔은 경우는 기본값으로 빌드했는데 /usr/local/bin에 있었다.

$ /usr/local/bin/phpize

그러면 라이브러리가 부족할경우 에러가 뜨는데 apt-get을 이용해서 가뿐히 설치해주고 해결한다. 난 autoconf가 없다고떠서 설치하니 해결되었다.

phpize가 완료돠면 이제 configure 파일이 생성되게 되는데 mysqli는 아래와 같이 옵션을 주자
$ ./configure --with-php-config=/usr/local/bin/php-config --with-mysqli=/usr/bin/mysql_config
사실 위 옵션을 몰라도 그냥 configure를 해본 후 에러메세지를 본 후 부족한 옵션을 추가하면 된다.

이제 make 까지만 실행 한다(install은 하지 않는다)
$ sudo make

이후 modules 디렉토리를 보면 mysqli.so 파일이 생성되어있을 것이다.
이것을 적당한 공간에 복사한다.
$ sudo mkdir /usr/local/lib/php/modules
$ sudo cp modules/mysqli.so /usr/local/lib/php/modules

이제 php.ini파일을 열어 수정해야한다.
$ sudo vim /usr/local/lib/php.ini

파일을 살펴보면 아래와 같이 모듈 경로 지정하는 부분이 주석처리되어있을 건데 이를 수정한다.
; extension_dir = "./"
->
extension_dir = "/usr/local/lib/php/modules "

그리고 더 내려가면 extension=모듈명 이런 구분들이 쭉 주석처리된 곳이 있는데 아래와 같이 모듈명을 추가해준다
extension=mysqli.so

이제 저장하고 apache를 재시작하면 적용이 된다!
mcrypt모듈도 같은 방법으로 하면 된다. mcryipt는 libmcryipt 를 요구하는데 sudo apt-get install libmcrypt-dev 명령으로 설치 후 그냥 configure & make 하면 된다.
 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License

+ Recent posts