0. 환경
운영체제 Ubuntu 12.04 LTS (우분투 설치 안내)
php설치
apt-get install php5 php5-dev php-common
1. 소스코드 다운로드
http://sourceforge.net/projects/php-screw/files/
최신버전을 다운로드 하는데,
본글에서는 screw 1.5버전을 기준으로 설명되었습니다.
[php_screw-1.5.tar.gz]
http://sourceforge.net/projects/php-screw/files/latest/download?source=files
2. 서버에서 screw 를 다운로드하고 압축을 해제합니다.
wget http://sourceforge.net/projects/php-screw/files/latest/download?source=files
tar xfzp php_screw-1.5.tar.gz
cd php_screw-1.5
3. my_screw.h 수정
SEED를 변경합니다.
screw 에서 키값은 암호화/복호화시 사용되므로 아주 중요합니다.
암호화시 사용한 SEED를 이용해 복호화를 하므로 SEED가 다른 소스로 암호화된 소스는 처리가 안됩니다.
vim my_screw.h
short pm9screw_mycryptkey[] = {
11152, 368, 192, 1281, 62
};
적절하게 아래처럼 변경(아래처럼 변수를 늘려도 됨)
short pm9screw_mycryptkey[] = {
12311, 312, 4422, 534, 11, 849, 125
};
4. 컴파일
phpize
./configure
make
make install
4.1 컴파일 오류
/usr/local/src/php_screw-1.5/php_screw.c:124:2: error: 'struct _zend_compiler_globals' has no member named 'extended_info'
/usr/local/src/php_screw-1.5/php_screw.c: In function 'zm_shutdown_php_screw':
/usr/local/src/php_screw-1.5/php_screw.c:133:2: error: 'struct _zend_compiler_globals' has no member named 'extended_info'
/usr/local/src/php_screw-1.5/php_screw.c: In function 'pm9screw_compile_file':
/usr/local/src/php_screw-1.5/php_screw.c:81:7: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
/usr/local/src/php_screw-1.5/php_screw.c: In function 'pm9screw_ext_fopen':
/usr/local/src/php_screw-1.5/php_screw.c:36:7: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
make: *** [php_screw.lo] Error 1
위와 같은 오류가 발생할 경우 php_screw.c 파일의 마지막줄에 CG(extended_info) = 1; 줄을 주석처리해준다
PHP_MINIT_FUNCTION(php_screw)
{
//CG(extended_info) = 1;
org_compile_file = zend_compile_file;
zend_compile_file = pm9screw_compile_file;
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(php_screw)
{
//CG(extended_info) = 1;
zend_compile_file = org_compile_file;
return SUCCESS;
}
4. so 파일 복사
php5 extension 모듈이 있는 폴더에 복사해준다
cp modules/php_screw.so /usr/lib/php5/20100525/
extension 모듈 디렉토리 위치를 모르는 경우 아래와 같이 확인을 할 수 있다
php -i | grep extension_dir
5. php.ini에 php_screw.so 추가
cd /etc/php5/mods-available
echo "extension=php_screw.so" > screw.ini
cd /etc/php5/conf.d
ls -s ../mods-available/screw.ini 90-screw.ini
상황에 따라서 php.ini 파일에 직접 extension=php_screw.so 를 적어주어도 된다.
6. apache 웹서버 재시작
/etc/init.d/apache2 restart
7. screw 설치확인
php -i | grep screw