[완료]PHP Startup: Unable to load dynamic library
이런 warning이 뜨는 상황입니다.
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/http.so' - /usr/lib/php5/20090626+lfs/http.so: cannot open shared object file: No such file or directory in Unknown on line 0
파일이 없는게 문제라고 해서
해당 위치에 가보니까
drwxr-xr-x 2 root root 4096 2010-06-20 23:21 20060613+lfs/
drwxr-xr-x 2 root root 4096 2010-09-24 19:23 20090626+lfs/
이렇게 2개의 폴더가 존재합니다.
2009~ 로 시작하는 폴더안에 들어있는 extension library들은 정상 동작하는데
2006~ 로 시작하는 폴더안에 들어있는 extension library들이 파일을 찾지 못한다고 난리입니다.
단순히 so 파일을 복사하기만 하면
php와 해당 library 가 compile 된 버전이 달라서 안된다고 합니다.
아래와 같은 에러가 나고요.
PHP Warning: PHP Startup: http: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0
그렇다면 해결책은
현재 php 버전에 맞는 so 파일을 받아서 넣어주는 것인데
그걸 어떻게 하는 것인지 잘 모르겠습니다. -_-;;
apt-get 등에서는 php 관련 library는 최신이라고 나오고요.
http://pecl.php.net/package/pecl_http
여기에서는 .tgz 파일만 잔뜩 있는데
여기서 최신 버전을 아무 폴더에 받아서
make && make install 하면 되는 것인가요?
현재 여러 사람이 사용중인 서버라
저렇게 소스 설치를 해본적이 없어서
질문을 먼저 올립니다 ㅠㅠ
질문 요약 123
1. 왜 이런 일이 발생한 것인가요?
누군가가 PHP 업데이트 (재컴파일) 을 감행한 것인가요?
그렇다면 몇몇 library는 같이 올라가고 나머지는 다시 컴파일 되지 못한 이유가 무엇인가요 ?
2. 해당 extension의 tgz 를 받아서 make && make install 하면 .so 파일이 생기고 그 파일만 복사하면 되나요?
3. API=20060613 컴파일 버전을 API=20090626 버전에서 그냥 사용하는 방법은 없나요?
---------------------
phpinfo에서 살펴본 서버 상황 추가로 달아봅니다.
System Linux poolc-server 2.6.32-3-686 #1 SMP Thu Feb 25 06:14:20 UTC 2010 i686
PHP Version 5.3.2-1
Loaded Configuration File /etc/php5/apache2/php.ini
Additional .ini files parsed
/etc/php5/apache2/conf.d/apc.ini, /etc/php5/apache2/conf.d/curl.ini, /etc/php5/apache2/conf.d/fileinfo.ini, /etc/php5/apache2/conf.d/gd.ini, /etc/php5/apache2/conf.d/http.ini
php.ini 파일 이외에
addtional ini files 로 http.ini 설정되어 있습니다
해당 파일에는
extension=http.so
달랑 한줄 설정되어 있습니다.
php-dev 패키지가
php-dev 패키지가 설치되어 있어야 하고요.
pecl install pecl_http
하시면 됩니다.
PHP가 버전업이 되어서 이전 버전의 확장들을 쓸 수 없는 상태입니다. 복사해도 안되고 새 버전의 PHP 개발 패키지에 포함된 phpize를 이용해서 새로 빌드해야 합니다. pecl 패키지니까 그냥 저렇게 하시면 해결될 것 같네요.
감사합니다
phpize 로 업데이트 하면 되는 것이었군요 =_=;;
댓글 달기