읽기 가능한 파일(또는 폴더)인지 체크하는 is_readable 함수


bool is_readable ( string $filename )
(PHP 4, PHP 5)

읽기 가능한 파일(또는 폴더)이면 true를 반환하고, 아니면 false를 반환합니다.

예제 (ex #3

 <?php
 
if (is_readable('test.txt'
)) {
    echo 
'읽기 가능한 파일입니다.'
;
 }else{
    echo 
'읽기 권한이 없는 파일입니다. 권한 0707, 0777로 바꿔주세요.'
;
 }
 
?>


쓰기 가능한 파일(또는 폴더)인지 체크하는 is_writable 함수


bool is_writable ( string $filename )
(PHP 4, PHP 5)

쓰기 가능한 파일(또는 폴더)이면 true를 반환하고, 아니면 false를 반환합니다.

예제 (ex #4

 <?php
 
if (is_writable('test.txt'
)) {
    echo 
'쓰기 가능한 파일입니다.'
;
 }else{
    echo 
'쓰기 권한이 없는 파일입니다. 권한 0707, 0777로 바꿔주세요.'
;
 }
 
?>


실행 가능한 파일인지 체크하는 is_executable 함수


bool is_executable ( string $filename )
(PHP 4, PHP 5)

실행 가능한 파일이면 true를 반환하고, 아니면 false를 반환합니다.

예제 (ex #5

 <?php
 
if (is_executable('test.txt'
)) {
    echo 
'실행 가능한 파일입니다.'
;
 }else{
    echo 
'실행 권한이 없는 파일입니다. 권한 0707, 0777로 바꿔주세요.'
;
 }
 
?>


읽기, 쓰기, 실행의 권한 문제에 대한 설명은 퍼미션(Permission) 설정을 참고하십시요.

[출처] : http://blog.habonyphp.com/entry/php-%EC%9D%BD%EA%B8%B0-%EC%93%B0%EA%B8%B0-%EC%8B%A4%ED%96%89%EC%9D%B4-%EA%B0%80%EB%8A%A5%ED%95%9C-%ED%8F%B4%EB%8D%94-%ED%8C%8C%EC%9D%BC%EC%9D%B8%EC%A7%80-%EC%B2%B4%ED%81%AC%ED%95%98%EB%8A%94-%ED%95%A8%EC%88%98#.WA7E9U__qUk


붉은색은 자주 쓰는 함수

 ▶ 문자열 다듬기

 
 - trim(), ltrim(), chop()에서 지우는 공백은 스페이스, '\n'(줄바꿈), '\t'(가로 탭), '\v',

 ○ trim();
      - 문자열의 처음과 끝에 있는 공백을 지운다.

 ○ ltrim();
      - 문자열의 처음에 있는 공백을 지운다.
 ○ chop();
      - 문자열의 끝에 있는 공백을 지운다.
 
 
 
 ▶ 문자열 정돈
 
 ○ nl2br();
      - 문자열중 줄바꿈문자(\n)를 XHTML에서의 줄바꾸기인 <br/>태그로 바꾸어 준다.(4.0.5 이전의 HTML에서는 <br>태그)
 
 
 ▶ 문자열의 대소문자 관련 함수
 
 ○ strtoupper();
      - 모든 알파벳을 대문자로
 ○ strtolower();
      - 모든 알파벳을 소문자로
 ○ ucfirst();
      - 문장의 처음이 알파벳이면 그것만 대문자로
 ○ ucword();
      - 각 단어의 첫 알파벳을 대문자로
 
 
 
 ▶ 문자열 나누고 합치기
 
 ○ explode();
      - 지정 문자를 기준으로 문자열의 전, 후를 나누어 배열로 저장한다.
 
      ex) $email =
'email@email.com';     $email_array = explode('@', $email);
           $email_array[0] → 'email';     $email_array[1] → 'email.com';
 
 ○ implode();, join();
      - 지정 문자를 기준으로 배열을 전, 후에 배치하여 문자열을 합친다.
 
      ex) $new_email = implode('@', email_array);     $new_email → 'email@email.com';
 
 
 
 ○ strtok();
      - 지정 토큰문자로 토큰화 해서 구분

ex)
     $token = strtok($feedbak, ' ') // 처음 토큰화 하기
      echo $token.'<br />';
      while ($token!= ''){
            $token = strtok(' '); // 두번째 토큰화 (토큰화하고 싶은)
            echo $token.'<br />';
       }

 ○ substr();
 
      - 문자열 중 특정 시작부분과 끝부분 사이의 문자열을 추출하는데 사용한다.
      ex) $test = 'PHP Webprogramming';
           $test1 = substr($test, 1);     $test2 = substr($test, -1);     $test3 = substr($test, 5, 8);     $test4 = substr($test, 4, -2);
 
           $test1 → 'HP Webprogramming'(앞에서 1번 부터)
           $test2 → 'g'(뒤에서 1번 부터)
           $test3 → 'ebprogra'(앞에서 5번부터 8개)
           $test4 → 'Webprogrammi'(앞에서 4번부터 뒤에서 2번까지)

 
 
 
 ▶ 문자열 비교하기
 
 ○ strcmp();
      - C언어에서의 함수와 같다. 앞의 문자열을 기준으로 같으면 0을, 우선순위가 높으면 -1을, 반대의 경우에는 1을 리턴한다.
      - 단, 대문자와 소문자의 경우 소문자가 우선순위가 더 높다.(ASCII코드의 대소관계를 생각하면 쉽다.)

 ○ strcasecmp();
      - C언어에서의 stricmp()와 같다. 두 문자열을 비교하는 것은 strcmp()와 같지만 대소문자를 구분하지 않는다.
 ○ strnatcmp(); & strnatcasecmp();
      - 이 두 함수는 문자열을 좀더 자연스러운 기준에서 비교한다.(strnatcmp("12","2")의 결과는 1이다.)
      - 이 두 함수의 차이는 대소문자의 구분여부이다.(이 두 함수의 차이는 case의 유무여부이다.)
 
 
 
 ▶ 문자열의 길이 확인하기
 ○ strlen();
      - C언어에서의 함수와 같다. 문자열의 길이를 정수값으로 리턴해준다.

 
 
 ▶ 문자열 안에서 문자열 찾기
 ○ strstr();
      - 문자열 안에서 특정 문자열과 일치하는 부분이 있는지 찾아내는데 쓰이는 함수이다.
      - 일치하는 문자열이 있을 때는 해당 문자열이나 문자를 포함하여 이후 문자열을 리턴한다.
      - 일치하는 문자열이 없을 시에는 false를 리턴한다.
 
      ex) $str='Lion sleep to night';     $res = strstr($str, 'sleep');
           $res → 'sleep to night'
 
 ○ stristr();
      - strstr()과 같으나 대소문자를 구분하지 않는다.(ABC, Abc, aBC모두 같은 것으로 취급한다.)
 
 ○ strchr();
      - strstr()과 같으나 문자열대신 문자를 찾는다.
 
 ○ strrch();
      - strchr()과 같으나 뒤에서 부터 일치하는 문자를 찾기 때문에 마지막으로 나타난 문자부터 문자열을 출력한다.
 
 
 
 ▶ 문자열의 위치 찾아내기
 
 ○ strpos();
      - 문자열 내에서 일치하는 문자열이나 문자를 찾아 문자열 대신 해당 위치를 숫자로 알려준다.
      ex) $test = 'Ice cream';     $res1 = strpos($test, 'a');     $res2 = strpos($test, 'e');
           $res1 → 7(0부터 시작한다.)     $res2 = 2(일치하는 문자나 문자열이 많을 경우 가장 앞의 것을 기준으로 한다.)
      ex) $test = 'Ice cream';     $res = strpos($test, 'e', 4);
           $res = 6(앞에서부터 4번째에 있는 c부터 해당문자열의 위치를 찾는다.)

     
 ○ strrpos();
 
      - strpos와 비슷하나 찾는 문자가 가장 마지막에 보이는 곳의 위치를 리턴한다.
       
 ※ 두 함수 모두 만약 문자열에 needle(찾는 문자나 문자열)이 없으면 false를 리턴하는데 PHP에서는 false를 0과 같다고 보기 때문에
 
      위치 0을 리턴한것인지 false를 리턴한 것인지 구분할 수가 없다. 이 문제는 === 연산자를 사용하여 해결할 수 있다.
 ex) $res = strpos('Hello world', 'H');     //이 경우에는 가장 앞에 'H'가 있기 때문에 0을 리턴하지만 PHP는 false와 구분하지 못한다.
 
      if($res === false)
           echo 'Not found';
      else
           echo 'Found at position 0';
 
 
 
 ▶ 문자열 대체하기
 
 ○ str_replace();
      - 문자열에서 문자열를 찾아 대체문자열로 바꾸어 리턴한다.
      ex) $test = 'Change';     $res = str_replace('g', 'c', $test);
           $res → 'Chance'

 
 ○ substr_replace();
      - 특정 위치의 문자열을 대체문자열로 바꾸어 리턴한다.
      ex) $test = 'Vitamin A'; $res = substr_replace($test, 'C', -1);
           $res → 'vitamin C'



출처 : http://www.webmadang.net/index/main.jsp


1. 1개 도메인에 대해서 목적지 주소로 변경할 때

<?
if(strpos($HTTP_HOST, 'aaa.co.kr') == strlen($HTTP_HOST)-strlen('aaa.co.kr')) {
    header("location:http://www.aaa.com".$REQUEST_URI);
    exit;
}
?>

2. 다수의 도메인에 대해서 목적지 주소로 변경할 때

<?
if(strpos($HTTP_HOST, 'aaa.co.kr') == strlen($HTTP_HOST)-strlen('aaa.co.kr')) {
    header("location:http://www.ggg.co.kr".$REQUEST_URI);
    exit;
} elseif (strpos($HTTP_HOST, bbb.co.kr) == strlen($HTTP_HOST)-strlen('bbb.co.kr')) {
    header("location:http://www.ggg.co.kr".$REQUEST_URI);
    exit;
}
?> 

$HTTP_HOST 항목에 www. 는 적지 않는다 (자동으로 판별하는듯)
aaa.co.kr = 접속하는 주소
www.aaa.com && www.ggg.co.kr = 변경할 주소  

3. 상대경로 내에 있는 특정파일로 연결을 원할 때

<?
if(strpos($HTTP_HOST, 'bbb.co.kr') == strlen($HTTP_HOST)-strlen('bbb.co.kr')) {
    echo "<script>document.location.replace('aa.html')</script>";
    exit;
}
?>

4. 다른 방법

if ($_SERVER['HTTP_HOST'] == 'aaa.co.kr' || $_SERVER['HTTP_HOST'] == 'www.aaa.co.kr') {
header("Location: http://aaa.co.kr/v2");
exit;
}

'Works > PHP' 카테고리의 다른 글

php 퍼미션 관련 함수  (0) 2016.10.25
PHP 문자열 함수  (0) 2016.06.30
php 함수지원여부 확인 소스  (0) 2016.04.25
php 5.5 url 변수값 처리  (0) 2016.03.25
phpmyadmin 로그인 인증 방법  (0) 2016.02.26

<?

if (function_exists('imagerotate')) {
        echo "imagerotate OK";

 } else {
        echo "imagerotate NO";

}

?>

예제는 수많은 php 함수 중 imagerotate 가 있는지 판별하여 있다면 imagerotate OK 를 출력하고 없다면 imagerotate NO 를 출력한다.
function_exists('imagerotate') 에 imagerotate 외 다른 함수를 입력하면 다른 함수 체크 가능

'Works > PHP' 카테고리의 다른 글

PHP 문자열 함수  (0) 2016.06.30
도메인을 판별하여 목적도메인으로 리다이렉션  (0) 2016.04.28
php 5.5 url 변수값 처리  (0) 2016.03.25
phpmyadmin 로그인 인증 방법  (0) 2016.02.26
PHP 언어셋 컨버팅  (0) 2015.12.16


sysadm.kr/test.php?test_id=aaa

이렇게 했을때

test.php에서

<? echo $test_id ?> 하면 aaa가 찍혀야 되는데 안찍히는 이유는 php 5.5 버전에는 register_globals 옵션이 아예 존재하지 않기 때문이며

이런 경우 $test_id 대신 $_GET['test_id'] 로 변경하면 화면에 변수값이 출력된다.


config.inc.php 파일을 열어 보면 여러 항목들 중

$cfg['Servers'][$i]['auth_type']     = 'cookie';  항목이 있는데 'cookie' 값을 http 또는 config 로 변경가능하며

아래는 지시자별 세부 내용이다.

http : .htaccess를 이용해서 MySQL 내의 계정(리눅스나 유닉스의 계정이 아닌 MySQL 내의 계정)을
이용해서 접속을 하는 방식

config : config.inc.php 파일 내에 아이디와 비밀번호를 저장하는 방식 (보안상 위험해 권장할 만한 사항이 아님)

만일 config 로 인증할 때 아래 변수에 User name 과 패스워드를 입력해야한다.

$cfg['Servers'][$i]['user']          = '';            // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed with 'config' auth_type) 

cookie : session 방식으로 ID&Password 을 입력받아 암호화 해서 기록하는 방식

 


[php에서 UTF-8, EUC-KR 인코딩 변경]

UTF-8을 EUC-KR로 변경
$str = iconv("UTF-8", "EUC-KR", $str);

EUC-KR을 UTF-8로 변경
$str = iconv("EUC-KR", "UTF-8", $str);


다른 서버에서 글 내용을 가져와 파싱하는 경우에 특히 많이 사용하게 된다.

상식적으로 알아둘 점: EUC-KR에서 한글은 2byte, UTF-8에서 한글은 3byte이다.

글자수 기준으로 substr() 함수를 이용하여 자를 때 참고해두자.



virtualhosts.conf (기본 "httpd-vhosts.conf") 파일의 적용을 원하는 계정을 찾아

아래의 지시자를 추가해준다.

* 파일 업로드 용량 설정

php_value upload_max_filesize 64M
php_value post_max_size 64M 

 

* 64M 는 예시이며 용량을 다르게 지정할 수도 있다. 

서버에 설정된 upload_max_filesize & post_max_size 의 설정 값 확인하는 스크립트

<?php
$s1 = 'upload_max_filesize';
$s2 = 'post_max_size';
echo $s1.' : '.ini_get($s1);
echo "<br>";

echo $s2.' : '.ini_get($s2);

?>


* 최대 업로드 갯수 설정

php_admin_value max_file_uploads 100  (php 5.2.12 이후)

서버에 설정된 max_file_uploads 의 설정 값 확인하는 스크립트

<?php
$s = 'max_file_uploads';
echo $s.' : '.ini_get($s);
?>


'Works > PHP' 카테고리의 다른 글

phpmyadmin 로그인 인증 방법  (0) 2016.02.26
PHP 언어셋 컨버팅  (0) 2015.12.16
Imagerotate 테스트 소스  (0) 2015.11.09
php 파일 암호화 php_screw-1.5  (0) 2015.10.30
모바일페이지 자동 리다이렉션 스크립트  (0) 2015.10.30

<?php
// File and rotation
$filename = 'IMG_9801.jpg';                         // $filename 은 테스트 환경에 맞는 다른 파일로 대체하여 사용
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>



php_screw-1.5.tar.gz

 

서론

php 소스 개발을 하다보면 공개하기가 꺼려지는 소스가 있기 마련입니다. 또한 디비 커넥트 설정과 계정정보 및 서버 설정에 대한 php 소스코드 들은 암호화가 해킹에 대한 최소한의 예방책일 것이다. 이러한 소스 암호화 툴로는 Zend , 이온큐브 쪽 솔루션이 잘 알려져 있습니다. 실제 여러업체에서 사용중이며 안정적입니다. 물론 유료화 버젼입니다. 하지만 무료버전의 암호화 툴도 있습니다. 오픈소스인 php_screw 입니다.
해당 솔루션은 일본의 ThePM9.com 이라는 개발업체에서 만들어 졌으며, 현재는 1.5버전까지 개발 되어 졌습니다. php 소스코드를 암호화된 파일로 생성하는 실행 파일과 이를 Zend – Compile에 전달 되기전에 해독하는 php 모듈 형태로 이루어 집니다.

어떠한 방법으로 암호화하는지는 공개 하지 않을 sourceforge를 통해 해당 소스를 다운 받아 php 동적 모듈을 생성 추가 하는 형태 입니다. 아래부터는 해당 모듈의 설치 법에 대해서 알아 보고겠습니다.

본론

1. 설치 조건
다운 받은 소스상 README 파일을 읽어보시면 알 수 있겠지만 php_screw-1.5버젼은 PHP5.x 버젼에 zlib 이 설치 되어있어야 하며, UNIX 계열 ( 리눅스 , FreeBSD 등) 에서만 지원 합니다. 그런데 php4 버젼에서도 설치 및 운영이 잘됩니다. (당연한 말씀이겠지만 php가 동적으로 설치 되어 있어야 합니다.)

 

2. sourceforge를 통해 해당 파일을 다운 받습니다. (http://sourceforge.net/projects/php-screw/)

 

3. 저는 해당 소스를 /usr/local/src 디렉토리에 옮겨 놓았습니다.
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ls
php_screw-1.5.tar.gz

 

4. 소스 압축 해제
[root@localhost src]# tar xvzf php_screw-1.5.tar.gz
php_screw-1.5/
php_screw-1.5/zencode.c
php_screw-1.5/LICENSE
php_screw-1.5/tools/
php_screw-1.5/tools/zencode.c
php_screw-1.5/tools/Makefile
php_screw-1.5/tools/screw.c
php_screw-1.5/config.h
php_screw-1.5/README.en
php_screw-1.5/config.m4
php_screw-1.5/Makefile.in
php_screw-1.5/php_screw.c
php_screw-1.5/php_screw.h
php_screw-1.5/my_screw.h
php_screw-1.5/README.jp

 

5. phpize 명령어를 이용하여 서버 정보에 맞는 configure 생성
[root@localhost src]# cd php_screw-1.5
[root@localhost php_screw-1.5]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20020918
Zend Module Api No: 20020429
Zend Extension Api No: 20050606

 

6. 생성된 소스 확인
  [root@localhost php_screw-1.5]# ll
합계 800
-rw-rw-rw- 1 root root 1388 1월 12 2004 LICENSE
-rw-r–r– 1 root root 3151 4월 4 00:10 Makefile.global
-rw-rw-rw- 1 root root 245 8월 1 2002 Makefile.in
-rw-rw-rw- 1 root root 4052 10월 14 2007 README.en
-rw-rw-rw- 1 root root 3290 10월 14 2007 README.jp
-rw-r–r– 1 root root 52186 4월 4 00:10 acinclude.m4
-rw-r–r– 1 root root 174501 4월 4 00:10 aclocal.m4
drwxr-xr-x 2 root root 4096 4월 4 00:10 autom4te.cache
drwxr-xr-x 2 root root 4096 4월 4 00:10 build
-rwxr-xr-x 1 root root 41134 4월 4 00:10 config.guess
-rw-r–r– 1 root root 1644 10월 13 2007 config.h
-rw-r–r– 1 root root 1540 4월 4 00:10 config.h.in
-rw-rw-rw- 1 root root 593 4월 17 2002 config.m4
-rwxr-xr-x 1 root root 29708 4월 4 00:10 config.sub
-rwxr-xr-x 1 root root 279525 4월 4 00:10 configure
-rw-r–r– 1 root root 2226 4월 4 00:10 configure.in
-rw-r–r– 1 root root 0 4월 4 00:10 install-sh
-rw-r–r– 1 root root 143988 4월 4 00:10 ltmain.sh
-rw-r–r– 1 root root 0 4월 4 00:10 missing
-rw-r–r– 1 root root 0 4월 4 00:10 mkinstalldirs
-rw-rw-rw- 1 root root 63 8월 1 2002 my_screw.h
-rw-rw-rw- 1 root root 3142 10월 14 2007 php_screw.c
-rw-rw-rw- 1 root root 194 8월 1 2002 php_screw.h
drwxrwxrwx 2 root root 4096 10월 14 2007 tools
-rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

 

7. SEED key 변경
  – README를 잘 읽어보시면 알겠지만 암호화 할때 특정 키값에 따라 암화된 값이 달라집니다.
그러므로 각자가 원하시는 값으로 변경 하시면 됩니다. my_screw.h 의 배열의 값을 변경 하시면 됩니다.
값의 크기에 따른 속도 차이는 없다고 합니다.

[root@localhost php_screw-1.5]# cat my_screw.h
short pm9screw_mycryptkey[] = {
11152, 368, 192, 1281, 62
};

 

8. 컴파일 환경 설정
  [root@localhost php_screw-1.5]# ./configure –with-php-config=/usr/local/php/bin/php-config

 

9. 컴파일
  [root@localhost php_screw-1.5]# make

 

10. 모듈 확인
  [root@localhost php_screw-1.5]# ll modules/
합계 32
-rw-r–r– 1 root root 721 4월 4 00:25 php_screw.la
-rwxr-xr-x 1 root root 26781 4월 4 00:25 php_screw.so

 

11. 모듈 위치 지정
  – 모듈을 확인 하고 make install 을 통해 자동으로 모듈을 특정 디렉토리를 이동 할 수 있지만 경로명이 직관적이지 않아 자체디렉토리를 만들어 줍니다.
[root@localhost php_screw-1.5]# mkdir /usr/local/lib/php_modules
[root@localhost php_screw-1.5]# mv modules/php_screw.so /usr/local/lib/php_modules

 

12. php.ini 설정
  – php.ini 의 설정을 통해 해당 모듈을 로드할 수 있게 합니다. 아래와 같이
[root@localhost php_screw-1.5]# vi /usr/local/lib/php.ini
……
extension_dir = “./” 을 extension_dir = “/usr/local/lib/php_modules” 로 수정 및 아래 내용 추가
extension=php_screw.so
…..

 

13. 모듈 확인
  – 아파치 재시작 후 모듈 확인
[root@localhost php_screw-1.5]# /usr/local/apache/bin/apachectl restart
[root@localhost php_screw-1.5]# php -i | grep php_screw
php_screw
php_screw support => enabled
PWD => /usr/local/src/php_screw-1.5
_SERVER["PWD"] => /usr/local/src/php_screw-1.5
_ENV["PWD"] => /usr/local/src/php_screw-1.5
[root@localhost php_screw-1.5]#

 

14. 암호화 명령어 컴파일
  – 모듈 추가가 완료 되면 소스를 암호화하는 툴을 컴파일 해야 합니다.
해당 소스트 tools 라는 디렉토리에 있습니다.
[root@localhost php_screw-1.5]# cd tools/
[root@localhost tools]# pwd
/usr/local/src/php_screw-1.5/tools

 

15. 컴파일 및 결과 확인
[root@localhost tools]# make
gcc -o screw screw.c zencode.c -lz
[root@localhost tools]# ll
합계 24
-rw-r–r– 1 root root 105 10월 14 2007 Makefile
-rwxr-xr-x 1 root root 8644 4월 4 00:34 screw
-rw-rw-rw- 1 root root 1541 10월 14 2007 screw.c
-rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

 

16. screw 라는 명려어를 이용해서 암호화하기
  – 사용하기 쉽게 path가 잡혀있는 경로 이동 하기 것이 좋을듯합니다.
- test.php 자연수를 입력 받아 구구단을 출력하는 소스입니다.
[root@localhost tools]# mv screw /usr/local/bin
[root@localhost tools]# cd /home/test/public_html/
[root@localhost public_html]# ll
합계 4
-rw-r–r– 1 root root 1398 4월 4 00:39 test.php
[root@localhost public_html]# screw test.php
Success Crypting(test.php)
[root@localhost public_html]# ll
합계 8
-rw-r–r– 1 root root 768 4월 4 00:44 test.php
-rw-r–r– 1 root root 1398 4월 4 00:44 test.php.screw

 

17. 암호화 파일 확인 및 원소스 삭제
  – 위의 결과와 같이 소스이름뒤 .screw 가 붙은 파일이 원 소스이다. 백업 후 삭제 해준다.
- 암호화 파일 확인
[root@localhost public_html]# cat test.php
PM9SCREW �>;ㅤㅅㅟㅊ,�{�!`�s첨e=�Iㅤㅍㅐㅍ�YU.i*�+ⓘⅴㅤㄷㅘㄻㅤㄲㅑㄷㅤㄷㅜㅋ��|(p�@~B㎎臾;Nx�{uㅤㄱㅢㄻ1ㅤㅈㅙㅅ$ごㅤㅆㅢㄵ�Li�.b��ㅤㅅㅞㅅ厘TH�*�[c�Lf
RbZ�gr統�ㅤㅇㅡㄾt24%#�ㅤㄹㅓㅀ�8�EㅤㅆㅒㅤZ緡v�ㅤㅎㅞㄺㅤㄷㅘㅇ�#_�Mㅤㄲㅘㅊㅤㄷㅙㅍ4n펍岱!
�`ㅤㄸㅙㅀ�h�`�iZHㅤㄱㅘㄾ:s�#�-LTㅤㄲㅣㅍH�3ㅤㄲㅔㄿ狼lㅤㅅㅒㄳ�ㅤㄴㅔㅊㅤㅉㅡㅈ뼘x0ㅤㄱㅏㄲ1�ㅤㄲㅘㅀBEㅤㅁㅣㅀㅤㅆㅒㄼ��tㅤㅎㅣㅌc22%ㅤㅌㅔㅀx�{ㅤㄷㅙㄳ)嗅X窺!st�ㅤㅆㅞㅆ섞ㅤㄲㅖㅂ8�E�[m�*陛�
�*w�gㅤㅌㅛㄺJU1ㅤㅈㅝㄵ�W�I�lT商P'ㅤㄲㅔㄺ�+�|+M�V�76��Yㅤㄴㅑㄵㅤㅇㅡㄾ�ㅤㄲㅖㅁ莩�nr���8c詐yKR�}%A僭r�T�`ㅤㅃㅓㄵ"A�
ㅤㄴㅘㅇ��O�r$LZ쇨mㅤㄹㅕㄻ_�\D7淨ㅤㅋㅕㅊ芟鍋$侘ㅤㄲㅒㄺC�\���%驕W廈ㅤㅍㅐㄶe�Z펫Y�Urㅤㅇㅏㅄ~ㅤㅈㅜㄳ鍋�ㅤㅅㅝㄱ�6� ㅤㅎㅕㄼ�bS沈�Jㅤㄱㅢㅈ�cb ㅤㅂㅒㄵ%ㅤㅎㅝㅅx炡�8;?o筒V1ㅤㅍㅑㄻVy((ㅤㄴㅠㅀㅤㅈㅜㄵ0.BbC
���6崗≫?a-;戾+倜�m�F�6d|Tx/�ㅤㅉㅜㄻㅤㄲㅛㄲㅤㅊㅛㄴ�2ㅤㅈㅐㄻ�ㅤㄹㅠㅆ!�ㅤㄱㅗㅋqRc>匕qo@逋[root@localhost public_html]#

 

결론

설치 및 운영에는 특별히 신경 쓴 부분이 없다. 그러나 서버 이전시 문제 되는 부분이 있다. my_screw.h 에 설정된 SEED key 값을 모르게 된다면 아무리 모듈을 만들어도 해당 소스 웹출력이 되지 않습니다. 원 소스 백업이 중요하며 해당 SEED key 값도 백업 해 놓는것도 중요합니다.

 

에러 발생시
php_screw-1.5/php_screw.c:124: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:
php_screw-1.5/php_screw.c:133: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
make: *** [php_screw.lo] Error 1
이러한 에러가 날 경우, 위의 에러메시지의 라인 124, 133을 찾아보면 CG(extended_info) = 1; 라고 적혀있는데,
이것을 주석처리하거나 삭제한 뒤, 다시 make 하면 된다.