PHP 에 GeoIP 를 사용할 경우 확장 모듈을 설치 하는 방법 입니다.

http://pecl.php.net/package/geoip

[root@yongbok ~]# cd /usr/local/src

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.0.7.tgz

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.1.1.tgz    (php7 이상일 경우) // 1.1.1 버전은 베타이긴 하나 작동에 이상은 없었다.

[root@yongbok ~]# tar xzvf geoip-1.0.7.tgz

[root@yongbok ~]# cd geoip-1.0.7

[root@yongbok ~]# /usr/local/php5/bin/phpize

[root@yongbok ~]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-geoip=/usr/local

[root@yongbok ~]# make ; make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/

php.ini 파일에 GeoIP 구문 추가

[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[GeoIP]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension = geoip.so
geoip.custom_directory=/usr/local/share/GeoIP (GeoIP.dat 파일의 경로 정의, 시스템마다 다를수 있음)

아파치 재시작
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart

phpinfo 로 확인
[root@yongbok ~]# echo '<?php phpinfo(); ?>'>/var/www/phpinfo.php


[출처] http://cy.cyworld.com/home/37141209/post/4BB719E61B15773CBD468401

[추가] php 에서 GeoIP 사용 샘플 (접속자 IP체크하여 국가코드 출력) // 2023. 1. 12 추가됨

<?php
geoip_setup_custom_directory('/home/your_account/');
$a = $_SERVER['REMOTE_ADDR'];
$country = geoip_country_code_by_name($a);
echo "Your IP : ".$a." [$country]";
?>

[설명] geoip_setup_custom_directory() 함수는 이미 php.ini 에 정의되어 있는데 소스코드에 별도로 정의하는 이유는

php.ini 에 정의된 geoip_setup_custom_directory 의 퍼미션이 other가 읽기권한이 없으면 국가코드가 NULL 로 

출력되는데 퍼미션 변경이 불가한 상황일 때 위 방법 (일반계정 내에 데이터 파일을 업로드 하고 경로 정의) 을

이용하면 문제 없이 국가코드가 출력된다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29


 Zend Guard Loader 설치

================================================================
PHP 가속 모듈인 Zend Optimizer는 PHP-5.2.x 버전까지만 지원되며,
 PHP-5.3.x 버전부터는 Zend Guard Loader를 설치해야 합니다.

Zend Guard Loader의 설치 방법을 알아 보겠습니다.

1. 소스 다운로드 및 압축 해제
 아래의 링크에서 소스 다운 (Zend 사이트 로그인 필요)
 http://www.zend.com/en/products/guard/downloads

 # tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz


2. php 버전 확인 후 소스 폴더에서 버전에 맞는 모듈 파일을 복사
 # /usr/local/php/bin/php -v
 # cp ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendOptimizer.so /usr/local/php/lib/


3. php.ini 파일에 다음 줄을 추가
 # vi /usr/local/php/lib/php.ini
 [Zend]
 zend_extension=/usr/local/php/lib/ZendGuardLoader.so


4. apache restart 후 php –v 및 phpinfo에서 설치 확인

 # /usr/local/apache/bin/apachectl restart
 # /usr/local/php/bin/php –v
 . 
 with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

[PHP] GeoIP 확장(Extension) 모듈 설치  (0) 2017.08.11
APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29


APC 추가 하기 (php 5.2.6 이랑 apache 2.2.9 입니다.)

1. /home/php/bin/pecl download apc
2. tar -xvzf APC-3.0.19.tgz
3. cd APC-3.0.19
4. /home/php/bin/phpize
4. ./configure --enable-apc-mmap --with-apxs=/home/apache/bin/apxs --with-php-config=/home/php/bin/php-config
5. make
6. make install
    이렇게 하시면 기본적으로 php 의 extension 모듈 위치로 복사 됩니다.
7. 또는 이렇게 하셔도 됩니다. cp ././libs/apc.so /usr/local/lib
    이 부분도 역시 php extension 위치로 복사해서 넣으시면 됩니다.
8. php.ini 수정하기
    extension_dir=설정한위치로적용하세요.
       예) /home/php/lib/php/extensions/no-debug-zts-20060613/apc.so 가 있습니다.
          extension_dir=/home/php/lib/php/extensions
          extension="no-debug-zts-20060613/apc.so" 이렇게 넣으시면 됩니다.
          dir 은..적절히 조절 하시면 됩니다.
    enble_dl=on


    extension="apc.so"
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=256
    apc.ttl=7200
    apc.user_ttl=7200
    apc.num_files_hint=1024
    apc.mmap_file_mask=/tmp/apc.XXXXXX
    apc.enable_cli=1
    apc.include_once_override=1

[출처] https://www.leaderstudy.co.kr/bbs/board.php?bo_table=tip&wr_id=122&page=2&page=2

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

[PHP] GeoIP 확장(Extension) 모듈 설치  (0) 2017.08.11
Zend Guard Loader 설치  (0) 2017.05.17
freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29


PHP에서 MS-SQL 서버를 연동하기 위한 방법입니다

- PHP의 mssql extension을 컴파일 하기 위해서는 FreeTDS 라이브러리가 필요합니다.
  본문에서는 APM은 이미 설치되어 있는 것으로 가정하고 Freetds는 소스 설치, mssql 모듈은 extension으로 설치 하겠습니다.


(1) FreeTDS 설치

   # wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

   # tar xvzf freetds-stable.tgz

   # cd freetds-0.91

   # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --disable-odbc --disable-debug --enable-msdblib

   # make && make install

 

(2) freetds.conf 설정 및 ms-sql 접속 Test

   # vi /usr/local/freetds/etc/freetds.conf

 

- 아래의 항목 추가

   [TestMSSQL]
   host = IP주소
   port = 1433
   tds version = 8.0
   client Charset = UTF-8
  * tds version : 접속 하고자 하는 SQL Server 버젼에 맞게 수정.


(3) MS-SQL 접속 테스트

   # /usr/local/freetds/bin/tsql -H ip주소 -p 1433 -U db계정 -P 비밀번호


(4) mssql 모듈 설치

   # cd /usr/local/src/php-5.2.9/ext/mssql

   # /usr/local/php/bin/phpize

   # ./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config

   # make

   # cp .libs/mssql.so /PHP Extension 디렉토리

   # vi /usr/local/php/lib/php.ini
     extension=mssql.so <---- 추가

    # apache 재구동


(5) 모듈 설치 확인 - phpinfo의 mssql 항목 확인 및 php -i 옵션으로 확인

   # /usr/local/php/bin/php -i | grep mssql
   mssql
   mssql.allow_persistent => On => On
   mssql.batchsize => 0 => 0
   mssql.charset => no value => no value
   mssql.compatability_mode => Off => Off
   mssql.connect_timeout => 5 => 5
   mssql.datetimeconvert => On => On
   mssql.max_links => Unlimited => Unlimited
   mssql.max_persistent => Unlimited => Unlimited
   mssql.max_procs => Unlimited => Unlimited
   mssql.min_error_severity => 10 => 10
   mssql.min_message_severity => 10 => 10
   mssql.secure_connection => Off => Off
   mssql.textlimit => Server default => Server default
   mssql.textsize => Server default => Server default

   mssql.timeout => 60 => 60

[mssql 접속을 위한 테스트 페이지 샘플]

<?php
 
   putenv("FREETDSCONF=C:\freetds.conf");  // 이 두줄은 빼도 되면 빼고 안되면 넣고.. 알아서..
    putenv("TDSVER=80");


     $link = mssql_connect('dbserver', 'DB아이디', 'DB비밀번호');
     if(!$link) {
        echo'Could not connect';
     }else{
      echo'Successful connection';

     }
     mssql_close($link);
 ?>


출처 : http://faq.hostway.co.kr/Linux_WEB/1261


'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26
mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26



* Incident

 

웹서버에서는 파일을 인식할 때 mime에 등록된 확장자를 참고하여 문서 형식을 결정하고 불러오는데 mime에 등록된 확장자가 아니고 파일의 내용을 통해 자동으로 문서 형식을 결정하는 기능이 필요할 때가 있다. 예를 들면, 아파치 기반의 어떤 사이트의 경우 이미지 파일이 확장자를 사용하지 않도록 개발하는 경우도 있다. 이때 필요한 것이 mod_mime_magic 모듈이다.

 

 

* Resolution

 

- mod_mime_magic 설치


1. 기존 웹서버와 동일한 버전의 아파치 설치파일을 다운로드 후 압축 해제한다.

[root@mooon]# wget https://archive.apache.org/dist/httpd/httpd-2.2.13.tar.gz

[root@mooon]# tar xvfz httpd-2.2.13.tar.gz

[root@mooon]# cd httpd-2.2.13


2. mod_mime_magic.so 파일을 생성한다.

※ 자동으로 /usr/local/apache/modules/ 에 mod_mime_magic.so 파일이 생성되고 httpd.conf 파일에 관련 정보가 추가된다.

[root@mooon]# /usr/local/apache/bin/apxs -i -a -c /root/pkg/httpd-2.2.13/modules/metadata/mod_mime_magic.c


3. 아파치를 재시작 한다.

[root@mooon]# /etc/rc.d/init.d/apachectl configtest

[root@mooon]# /etc/rc.d/init.d/apachectl restart


※ mod_mime_magic 모듈을 적용한 후에도 파일이 정상적으로 열리지 않는 경우가 있다.

이는 FTP에 데이터 전송유형이 자동일 경우 파일업로드 시 확장자가 없는 경우 텍스트파일로 인식하여 아스키(ASCII)모드로 전송된다.

이렇게 전송되는 경우 원본파일과 동일한 데이터가 업로드되지 않고 변조된 데이터가 업로드 됨으로서 파일이 깨지게 된다.

파일질라에서는 [전송 > 전송 유형 > 바이너리]로 변환 후 확장자가 없는 파일을 업로드하면 해결된다.

[출처] http://www.joshi.co.kr/?mid=board_Szhe52&document_srl=1148&order_type=desc&listStyle=viewer&page=3

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27
oAuth 확장모듈 설치  (0) 2016.03.29
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26
PHP zip 확장모듈 설치  (0) 2016.02.26


모듈 직접 다운로드 시  아래 링크에서 다운로드 받을 것.

http://pecl.php.net/package/oauth

[참고] 버전 2.0.0 이상은 php7.0.0 버전 이상을 위한 것이므로 자신의 php 버전이 5.x 대이면 버전 1.2.3 을 다운로드 받을 것.

cd /usr/local/php/bin/
pecl download oauth 를 실행하면 최신버전의 oauth (2.0.1버전)만 다운로드 받아지므로 가급적 위 경로에서 맞는 버전을 직접 받을 것.

tar xvzf oauth-1.2.3.tgz 

(1.2.3 버전을 압축해제하여)

cd oauth-1.2.3

(oauth-1.2.3 디렉토리로 이동)
/usr/local/php/bin/phpize (
phpize 를 실행하여 확장 모듈 추가를 위한 환경을 구성한다)

./configure --with-php-config=/usr/local/php/bin/php-config

(기존 php설치 디렉토리의 php-config를 사용)

make && make install
(컴파일을 실행한다)

설치가 완료 되면 php.ini 파일에 모듈 위치를 절대 경로로 삽입해주면 됩니다.

extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/oauth.so"
(경로는 설치환경에 따라 다를 수 있음)

[참고] make 과정 시 make: *** [oauth.lo] 오류 1 가 발생하면

yum install pcre 실행
yum install pcre-devel 실행

oauth-1.2.3.tgz

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

freetds 확장모듈 설치  (0) 2016.09.27
mod_mime_magic 설치  (0) 2016.08.01
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26
PHP zip 확장모듈 설치  (0) 2016.02.26
PHP zlib 확장모듈 설치  (0) 2016.02.05


CentOS 6 넘어오면서부터 yum install 에서 libmcrypt libmcrypt-devel 이 지원되지 않는다.

따라서 아래의 방법으로 진행해야하며

1. vi /etc/yum.repos.d/epel.repo

해당 파일에 아래의 내용을 저장한다.


[EPEL]
name=epel
type=rpm-md
baseurl=http://ftp.neowiz.com/fedora-epel/6/x86_64
gpgcheck=1
gpgkey=http://ftp.neowiz.com/fedora-epel/RPM-GPG-KEY-EPEL-6
enabled=1


2. yum clean all

3. yum install libmcrypt libmcrypt-devel

(Cent 5 의 경우 위 과정은 생략)

4. 동일 버전의 php 소스에서


예) php-5.2.17 의 경우


cd php-5.2.17/ext/mcrypt


/usr/local/php/bin/phpize
aclocal

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

그러면 아래와 같이 mcrypt.so 파일이 해당 경로에 만들어졌다고 나오는데

/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

php.ini 파일 하위에

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mcrypt.so

처럼 추가하고 웹서버 재시작하면 된다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

mod_mime_magic 설치  (0) 2016.08.01
oAuth 확장모듈 설치  (0) 2016.03.29
PHP zip 확장모듈 설치  (0) 2016.02.26
PHP zlib 확장모듈 설치  (0) 2016.02.05
PHP 수호신(Suhosin) 설치  (0) 2016.01.29


PHP zip 확장모듈 설치

* php source 위치 : /usr/local/src/php-5.2.17
* php.ini 위치 : /usr/local/apache/conf/php.ini

1. 설치된 버전의 php 소스 다운로드 또는 원소스 디렉토리로 이동

 - cd /usr/local/src/php-5.2.17/ext/zip

2. 1번의 해당 경로에서 아래의 명령어 실행

 - /usr/local/php/bin/phpize

3. configure

 - ./configure --with-php-config=/usr/local/php/bin/php-config --enable-zip

4. make

5. make install (make install 시 마지막 zip.so 경로 확인)

6. php.ini 설정

7. apache 재시작

/etc/init.d httpd restart or /usr/local/apache/bin/apachectl restart



출처 : http://wnstjqdl.tistory.com

 

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

oAuth 확장모듈 설치  (0) 2016.03.29
CentOS6 에서 mcrypt 확장모듈 설치시의 방법  (0) 2016.02.26
PHP zlib 확장모듈 설치  (0) 2016.02.05
PHP 수호신(Suhosin) 설치  (0) 2016.01.29
soap 모듈 추가 설치  (0) 2016.01.08

소스컴파일시 zlib 이 누락되어있을 경우 재컴파일 없이 확장모듈로 zlib을 올리는 방법이다.

[root@sysadm ~]# cd php소스파일디렉토리/ext/zlib

[root@sysadm ~]# cp -rp config0.m4 config.m4
[root@sysadm ~]# /usr/local/php/bin/phpize
[root@sysadm ~]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@sysadm ~]# make
[root@sysadm ~]# make install


php.ini 파일내부에

[zlib]
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"  (extension 경로는 php 버전에 따라 다를수 있음)
extension="zlib.so"

웹서버 재시작


[root@lvm07 src]# wget http://download.suhosin.org/suhosin-0.9.29.tgz

[root@lvm07 src]# tar xvfz suhosin-0.9.29.tgz

[root@lvm07 src]# cd suhosin-0.9.29

[root@lvm07 suhosin-0.9.29]# /usr/local/php/bin/phpize

[root@lvm07 suhosin-0.9.29]# ./configure --with-php-config=/usr/local/php/bin/php-config

[root@lvm07 suhosin-0.9.29]# make && make install

 

- php.ini Suhosin 설정 추가

[root@lvm07 ~]# vi /etc/httpd/conf/php.ini (서버 설정에 따라 php.ini 경로는 다를 수 있음)

[Suhosin]

;extension_dir=/usr/lib64/php/modules/

extension=suhosin.so

 

[root@lvm07 ~]# /usr/local/php/bin/php -v

PHP 5.3.3 (cli) (built: Jul  9 2015 17:39:00)

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    with Suhosin v0.9.29, Copyright (c) 2007, by SektionEins GmbH

 

Download

http://suhosin.org/stories/download.html

 

[자체추가]

php.ini에 아래와같이 설정하면 mail함수가 안됨

disable_functions = mail  (서버내 전체계정에 영향을 받음)


수호신을 이용해 계정별 php 함수 제한을 걸고 싶을때에는 아래의 룰을 <VirtualHost *> </VirtualHost> 사이에 넣어주면 된다.


php_admin_value suhosin.executor.func.blacklist "함수명"
예) php_admin_value suhosin.executor.func.blacklist "mail" (mail 함수를 사용불가하게 할경우)

 

1개 이상의 함수를 막는경우에는

 

php_admin_value suhosin.executor.func.blacklist "함수명1,함수명2"

 

[출처] http://sangchul.kr/551