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

[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 377

번호 제   목   글쓴이 날짜 조회
177 [윈도우서버] Windows2003서버로 파일 다운로드 기능시 문제 해결방법 관리자 2011-06-17 34175
176 [윈도우미디어] Windows 98에서 동영상이 실행되지 않습니다. 어떻게 하나요? 관리자 2008-12-08 34190
175 [리눅스서버] CentOS7 SSH 실행방법 정리 제이네트워크 2018-06-16 34211
174 [윈도우미디어] 동영상은 플레이 되는 것 같은데 화면이 검게 나오거나 줄이 생깁니다 관리자 2008-12-08 34312
173 [리눅스서버] [apache] 아파치 설치시 에러 no acceptable C compiler found in $PATH 제이네트워크 2013-08-19 34315
172 [메뉴얼] naver, daum 사이트 검색정보 변경 메뉴얼 제이네트워크 2012-01-19 34319
171 [윈도우미디어] 미디어 플레이어 9/10이 설치 되어 있습니다. 그런데 미디어 플레이어 6.4로 … 관리자 2008-12-08 34400
170 [리눅스서버] [Apache 서버활용]아파치서버 링크제한, 인증 및 활용 제이네트워크 2016-09-03 34402
169 [윈도우미디어] 윈도우XP에 미디어 플레이어 8버전입니다 업그레이드 방법은? 관리자 2008-12-08 34443
168 [DB] [MSSQL]SQL 서버 관리자가 알아야 할 11가지 유용한 팁 제이네트워크 2015-01-21 34569
167 [기타] 알아두면 유용한 윈도우 단축키들 관리자 2011-06-10 34616
166 [리눅스서버] SFTP 접속만 가능한 계정 만들기] 제이네트워크 2019-06-30 34634
165 [기타] xe 설치시 msg_safe_mode_ftp_needed 혹은 msg_ftp_mkdir_fail 제이네트워크 2013-07-28 34639
164 [리눅스서버] 리눅스 서버 - 아파치 폴더 패스워드 주기 관리자 2011-06-17 34657
163 [DB] phpMyAdmin 3.2.5 설치 및 mcrypt 오류 관리자 2011-06-17 34700
162 [도메인] 도메인 등록기관 이전하기1 제이네트워크 2012-05-23 34756
161 [기타] 샌드브리지 PC 조립하기 -동영상1- 관리자 2011-06-10 34764
160 [기타] 알아두면 유익한 기본적인 컴퓨터용어[2] 관리자 2011-06-10 34770
159 [기타] 샌디브릿지PC 조립하기2 -동영상- 관리자 2011-06-10 34771
158 [윈도우미디어] 미디어 플레이어9는 어떻게 삭제합니까? 관리자 2008-12-08 34772
157 [윈도우서버] 윈도우 2003 또는 IIS 6.0 이상일 경우 FLV 파일 관리자 2011-12-29 34774
156 [리눅스서버] 아파치재시작시 SSL 패스워드 자동입력 방법 (1) 제이네트워크 2013-08-05 34794
155 [윈도우미디어] 미디어플레이어 에서 지정한 프로토콜이 지원되지 않습니다. 제이네트워크 2011-05-16 34869
154 [기타] 한글명으로 된 파일이 다운로드 되지 않을 때 관리자 2011-07-26 34901
153 [리눅스서버] [LINUX]리눅스 한글관련 지원관련 문제 제이네트워크 2015-02-05 34911
152 [기타] 검색엔진이 좋아하는 메타태그 만들기 관리자 2011-06-17 34917
151 [리눅스서버] 리눅스 apache에서 동시 접속자 수 체크 제이네트워크 2018-03-30 34933
150 [윈도우서버] windows 2000서버 혹은 2003 서버 admin 패스 잃어버렸을때복구법 관리자 2011-06-17 34986
149 [윈도우서버] windows 2008 media server 방화벽 문제 관리자 2011-06-17 35020
148 [리눅스서버] [yum에러시] Another app is currently holding the yum lock; waiting for it to exit 제이네트워크 2013-07-23 35136
147 [윈도우서버] [윈도우업데이트]커멘드로 윈도우업데이트 실행 및 정지 제이네트워크 2013-12-19 35163
146 [리눅스서버] Apache / httpd 설치방법의 차이 (prefork, worker방식) 제이네트워크 2015-01-16 35193
145 [리눅스서버] 리눅스 지울파일 개수가 1024개 이상 초과 할때 /bin/rm: Argument list too long 제이네트워크 2013-03-06 35219
144 [리눅스서버] CENTOS7 에서 PHP-7.x 소스 설치시 mysqli , mysql , pdo-mysql 에러시 제이네트워크 2017-04-28 35260
143 [리눅스서버] 리눅스 서버에서 특수문자 폴더 파일 삭제 하기 관리자 2011-06-17 35262
142 [리눅스서버] 리눅스 설치 후 make 및 컨파일이 안될때.... 관리자 2011-10-11 35267
141 [리눅스서버] 리눅스에서 대량 파일 삭제 이동시 사용 제이네트워크 2012-07-26 35267
140 [DB] Excel to mysql (import /export) 엑셀데이타를 mysql로 입력하기 제이네트워크 2014-01-18 35279
139 [윈도우서버] [윈도우10 원격데스크톱 오류 CredSSP 암호화 Oracle 수정 때문] 제이네트워크 2018-06-21 35329
138 [리눅스서버] 리눅스 서버 ncftp 사용법 (1) 관리자 2011-06-17 35351
 1  2  3  4  5  6  7  8  9  10