HOME > 이용안내
이용안내
 
작성일 : 15-11-24 13:46
[스크립트언어] php 재컴파일 없이 모듈추가 하는 방법 입니다.
 글쓴이 : 제이네트워크
조회 : 44,679  

[php 확장모듈 설치]

php 설치 시 누락된 모듈을 추가 적용 하기 위해서는 php를 재설치 하는 방법도 있지만

확장모듈의 경우 개별적으로 추가 등록을 할 수도 있습니다.


설치 된 php에 확장모듈을 추가하기 위해서는 아파치가 동적으로 설치가 되어 있어야 하며

동적설치 유무를 확인하기 위해서는 httpd -l 또는 phpinfo 페이지 apachehandler 의 Loaded Modules 부분에

mod_so 가 적용되어 있는지를 확인 하시면 됩니다.


아파치 모듈의 동적운용(DSO)와 정적운용(Static)의 차이점은

DSO 방식의 경우 필요한 경우에만 모듈을 메모리에 적재하고

Static의 경우 설치된 모든 모듈을 메모리에 적재하는 방식의 차이 이며

DSO 방식의 경우에만 재설치 없이 php에 확장모듈을 추가할 수 있습니다.

(DSO(Dynamic Shared Object)는 아파치 1.3버전부터 지원하며 최근 하드웨어 성능의 향상으로 대부분의 경우 DSO 방식으로 아파치를 설치합니다.)


기본적으로 현재 설치되어 있는 php와 동일한 버전의 php 소스를 이용하며 다른 버전 사용시 실패할 확률이 높습니다.
해당 php 버전의 기본적으로 제공하는 확장 모듈은 {php_source_path}/ext/ 경로 안에 있는 디렉토리 명으로 확인 할 수 있습니다.
모듈명.so 파일 생성 후 다음과 같은 방법으로 적용 합니다.

설치된 php 경로에 추가모듈을 위한 임의의 디렉토리를 만듭니다.

(주의: 기존에 확장모듈을 별도로 추가하여 사용할 경우 해당 추가모듈 디렉토리를 그대로 사용합니다.)


ex)#mkdir /usr/local/php-5.3.35/extension

생성된 "모듈명.so" 파일을 생성한 임의의 디렉토리로 복사한 후

php.ini 파일에 다음과 같이 변경&설정한 후 아파치를 재가동 하여 적용 합니다.

extension_dir = "/usr/local/php/extension"
extension=모듈명.so



1. 기본 php configure를 이용하여 확장 모듈을 생성하는 방법
(4.2.1 버전에서는 정상적으로 설치 되는 것을 확인하였으나 5.1.6등의 버전에서는 설치되지 않았으며 php 버전에따라 적용되지 않습니다.)

현재 설치되어 있는 php 버전과 동일한 버전의 php 소스를 다운받아 압축을 해제 합니다.

#tar zxvf php-버전.tar.gz


해제된 소스의 경로로 이동 후 ./configure --enable-모듈명=shared 과 같은 형식으로 설정을 합니다.
(./configure --help|grep 모듈명 등의 명령어를 이용하여 설치시 --enable-모듈명 인지 --with-모듈명 인지 확인하여 적용 하여야 합니다.)

#./configure --enable-모듈명=shared

또는

#./configure --with-모듈명=shared


해당 모둘의 디렉토리로 이동하면 Makefile이 생성된 것을 확인할 수 있으며 make 명령어로 컴파일 합니다.

#cd ./ext/모듈명
#make


컴파일을 하면 .libs/모듈명.so 또는 modules/모듈명.so 파일이 생성이 됩니다.



2. phpize를 이용하여 확장 모듈을 생성하는 방법


현재 설치되어 있는 php 버전과 동일한 버전의 php 소스를 다운받아 압축을 해제 합니다.

#tar zxvf php-버전.tar.gz


해제된 소드 경로의 ext 디렉토리 내에 기본 확장 모듈이 디렉토리 명으로 되어 있으며 확장을 원하는 디렉토리 내에서 phpize를 실행 합니다.

#cd ./ext/모듈명
#{php_path}/bin/phpize


phpize를 실행 후 configure 등의 파일이 생성되며 다음과 같은 방법으로 configure와 make 실행 하여 컴파일 합니다.

#./configure --with-php-config={php_path}/bin/php-config --enable-모듈명
#make


컴파일을 하면 ./.libs/모듈명.so 또는 ./modules/모듈명.so 파일이 생성 됩니다.

해당 ./modules/디렉토리에서 생성된 .so파일을  php가 설치된 경로의 extensions 폴더로 복사합니다.

그  다음  php.ini 폴더에 extension=경로/모듈명.so 를 추가해 준다음

아파치를 재시작 합니다.


3. php를 새로 컴파일 하여 아파치에 직접 모듈을 교체하는 방법
(새로 설치하는 것과 큰 차이는 없으나 서비스 중단을 최소화 할 수 있는 장점이 있으며 알려지지 않은 문제점이 발생할 수 있습니다.)
(주의 : rpm 으로 설치된 apm은 해당되지 않습니다.)


현재 설치되어 있는 php 버전과 동일한 버전의 php 소스를 다운받아 압축을 해제 합니다.

#tar zxvf php-버전.tar.gz


해제된 소스 경로로 이동 후 phpinfo 등을 참고하여 기존 configure 옵션을 수정한 후 make로 컴파일 합니다. (make install은 진행하지 않습니다.)

#./configure {수정 된 옵션}
#make


아파치 데몬을 중단 한 후 아파치 모듈 디렉토리 (apache 1.x 의 경우 {apache_path}/libexec , apache 2.x 의 경우 {apache_path}/modules ) 내의 libphp5.php (또는 libphp4.php) 파일을 libphp5.php_bak 등의 형식으로 백업 합니다.

#{apache_path}/bin/apachectl stop
#mv {apache_path}/modules/libphp5.so {apache_path}/modules/libphp5.so_bak


php 실행 데몬 또한 백업 합니다.

#mv {php_path}/bin/php {php_path}/bin/php_bak

새로 컴파일한 libphp5.so 모듈과 php 실행 데몬은 각각 새로 컴파일한 소스 디렉토리 내의 libs/libphp5.so 과 sapi/cli/php 로 생성되어 있으며 이를 복사하여 대체 합니다.
(해당 경로에 없을 경우 소스 디렉토리 내에서 find . -name php, find . -name libphp5.so 등의 명령어로 위치를 확인 합니다.)


#cp -arp {php_source_path}/libs/libphp5.so {apache_path}/modules/
#cp -arp {php_source_path}/sapi/cli/php {php_path}/bin/


아파치를 재가동 하여 확인합니다.

#/usr/local/apache/bin/apachectl start







Cloud server Streaming service Domain Cloud Firewall

 
 

Total 382

번호 제   목   글쓴이 날짜 조회
262 [리눅스서버] 리눅스에서 공백이 포함된 디렉토리 처리 제이네트워크 2016-07-26 35609
261 [메일] 리눅스 sendmail 로 폼메일사용시 [email protected] 으로 발송될 경우 (1) 제이네트워크 2016-07-06 35032
260 [리눅스서버] [아파치SSL 에러] File size limit exceeded$HTTPD -DSSL 해결법 제이네트워크 2016-06-22 34712
259 [리눅스서버] CentOS 7.x vsftpd 자신의 홈디렉토리 상위폴더 접근막기 (2) 제이네트워크 2016-06-01 37906
258 [리눅스서버] Centos7.x 4TB 이상 하드디스크 추가 및 포맷하기 제이네트워크 2016-06-01 36933
257 [리눅스서버] 스왑메모리 초기화 혹은 swap 메모리 관리 제이네트워크 2016-05-13 36440
256 [기타] tar 특정폴더에 압축을 풀어야 할 경우 사용 옵션 제이네트워크 2016-05-10 31509
255 [DB] [mysqldump 에러] Got errno 28 on write 발생시 제이네트워크 2016-03-29 33421
254 [윈도우서버] Windows Server 2012R2 (윈도우2012 R2) IIS8.5 서버 FTP 가상디렉토리 설정 제이네트워크 2016-03-25 38803
253 [리눅스서버] [우분투]ubuntu 15.10 서버 네트워크 설정 및 ufw 방화벽 제이네트워크 2016-03-24 35357
252 [리눅스서버] 우분투15.10 서버에서 SSH접속 안될 때 [에러-서버와 매치되는 outgoing encryption … 제이네트워크 2016-03-17 37357
251 [PHP] php 에러시 Warning: date(): It is not safe to rely on the system's timezone settings 제이네트워크 2016-02-03 33302
250 [DB] phpMyAdmin 4.x 버전에서 필요없는 에러메세지 없애는 방법 제이네트워크 2016-02-01 32104
249 [쉘스크립트] /bin/sh^M: bad interpreter: No such file or directory 오류 발생 시 제이네트워크 2016-01-22 34394
248 [리눅스서버] 리눅스 에서 Apche / php / mysql 컴파일 옵션 확인하기 제이네트워크 2015-12-09 32132
247 [스크립트언어] [php-openssl] php-4.4.x openssl 추가 모듈 설치 제이네트워크 2015-12-01 37494
246 [스크립트언어] php zip 설치 (ziparchive php extension) 제이네트워크 2015-11-25 49400
245 [스크립트언어] php-5.3.x 확장모듈 cURL 설치 방법 제이네트워크 2015-11-24 45280
244 [스크립트언어] php-4.x.x 의경우 phpize 사용하여 curl 모듈 추가] 제이네트워크 2015-11-24 39356
243 [스크립트언어] php 재컴파일 없이 모듈추가 하는 방법 입니다. 제이네트워크 2015-11-24 44680
242 [스크립트언어] [php]php-5.3.x 버전 부터 Zend Guard Loader 설치 제이네트워크 2015-11-06 37096
241 [리눅스서버] [apache] mod_ruid2 모듈 설치시 에러 mod_ruid2.c:45:28: error: sys/capability.h: No such file … 제이네트워크 2015-11-06 35402
240 [메일] 센드메일-아웃룩에러 중 다른메일메세지가 배달중이거나... 제이네트워크 2015-11-03 32918
239 [스크립트언어] 각언어별 redirect 구문 제이네트워크 2015-10-06 38982
238 [메일] [sendmail]메일 수발신이 느릴때 (sendmail이 정상동작 하나 느리게 작동할 때) 제이네트워크 2015-09-22 35294
237 [DB] [mysql]mysqldump 로 백업시 lock table 에러로 백업이 안되는 경우 제이네트워크 2015-09-17 32967
236 [리눅스서버] CentOS(리눅스)버전, 혹은 APM(apache, php, mysql) 버전 확인하려고 할때 사용하는 … 제이네트워크 2015-09-07 34518
235 [스크립트언어] mysql 설치 후 phpMyAdmin #2002 MySQL 서버에 로그인할 수 없습니다. 해결법 (1) 제이네트워크 2015-09-03 50616
234 [리눅스서버] 리눅스서버에서 chracterset 을 맞출려고 할 때 제이네트워크 2015-08-25 34712
233 [윈도우서버] windows 2008/2012 서버 셋팅후 403 forbbiden 에러시 제이네트워크 2015-07-22 36629
232 [DB] [mysql] Mysql 에러코드 중에 (Got error 134 from storage engine) 나올때 처리법 제이네트워크 2015-06-04 31366
231 [DB] [mysql-5.6.x 설치 후 에러로 실행 안될때 ][Warning] TIMESTAMP with implicit DEFAULT value … 제이네트워크 2015-05-22 56984
230 [리눅스서버] [apche 1.3.x | 2.0.x 2.2 x.2.4.x ] 아파치 버전별 차이점 제이네트워크 2015-05-19 42771
229 [DB] [MS-SQL SERVER 2008 로그 파일 사이즈 줄이기] 제이네트워크 2015-05-12 34141
228 [윈도우서버] IIS7.x / IIS8.x 에서 asp 호스팅시 "Response 버퍼 제한 초과됨 " 오류 제이네트워크 2015-05-11 37064
227 [윈도우서버] [windows2008] SQL Server 액세스를 허용하도록 Windows 방화벽 구성 제이네트워크 2015-05-04 36310
226 [윈도우서버] [iis7.x ASP 에러] An error occurred on the server when processing the URL 제이네트워크 2015-05-04 66790
225 [DB] [mysql] 테이블 복사하기 (데이타포함, 비포함) 제이네트워크 2015-04-28 32999
224 [스크립트언어] [jquery] 파일 업로드 전에 파일사이즈 체크하기 제이네트워크 2015-04-28 50468
223 [윈도우서버] Windows Server 2008/2012 (64bit OS) - IIS7에서 32bit ASP 응용프로그램 사용법 제이네트워크 2015-04-27 36358
 1  2  3  4  5  6  7  8  9  10