php 컴파일시 아래와 같은 에러 메시지가 나오면

 configure: error: libjpeg.(a|so) not found.

configure: error: libpng.(a|so) not found.


- configure 중 해당 라이브러리가 없어 나는 에러

- 아래의 라이브러리 설치


yum install libjpeg-devel

yum install libpng-devel


해당 라이브러리 설치 후에도 에러가 발생하면 아래와 같이 설정

64bit 운영체제에서 해결이 됨.


ln -s /usr/lib64/libjpeg.so /usr/lib

ln -s /usr/lib64/libpng.so /usr/lib


[출처] http://wnstjqdl.tistory.com/entry/configure-error-libjpegaso-not-found-configure-error-libpngaso-not-found

 

shutdown 명령어를 이용하면 된다.

시작 -> 실행 하고,

shutdown /s /f /t 3600

라고 타이핑 해주면 된다.

/s 는 종료한다는 의미고, 대신 /r 이나 /l 을 붙이면 재부팅 하거나 로그오프 한다. 

/t 뒤에 붙는 3600 은 한시간 예약을 말한다. 적당히 알아서 조절하면 되겟다. 1초단위이며, 최대 예약 시간은 10년이다. (315360000!!)

/f 는 만약 강제 종료가 필요할 대 사용한다. 대화상자가 나와서 종료가 되지 않는 경우 등...

조금 더 많은 옵션을 보고 싶으면 커맨드라인에서 shutdown이라고만 쳐보면 자세한 명령어가 나오니 참조.

만약에 다른 볼일이 생각나서 예약해 놓은 자동꺼짐을 취소하고 싶을 경우에는

shutdown /a

라고 쳐주면 중단한다.

[출처] http://egloos.zum.com/talkable/v/1674594 

  

 

 

페이지 리디렉트와 검색엔진 최적화
301 redirect는 영구적으로 옮겼을때
302 redirect는 일시적으로 옮겼을때 사용
검색엔진 최적화에는 301 redirect 추천


[301 permanent redirect]


사이트를 새로운 도메인으로 옮겼다던가 페이지의 주소가 바뀌었을때 사용자들을 자동으로 바뀐 주소로 옮겨가게 만드는데는 두가지 방법이 있습니다.
301 permanent redirect와 302 temporary redirect 입니다.
301과 302는 사용자가 브라우저를 통해 웹서버에 요청했을때 돌려받는 웹서버의 상태코드입니다.
301은 요청한 정보가 새로운 주소로 영구적으로 옮겨갔다는것을 말해주며 302는 일시적으로 옮겨갔다는것을 말해줍니다.
표면상으로는 둘다 자동으로 사용자를 옮겨가게 만드니 사람의 육안으로는 구별할수 없으나 검색엔진 크롤러는 그 차이를 알수 있고, 이 두가지가 검색엔진 최적화에 미치는 영향은 꽤 큽니다.



이것은 말그대로 요청한 정보(사이트나 페이지)가 영구적으로 옮겼다는것을 말해줍니다.

 

예를 들어 aaa.com을 소유했던 사람이 bbb.com으로 사이트 주소를 옮겼을때 301 redirect를 해준다면 크롤러가 aaa.com에 접속했을때 aaa.com에서 인덱스한 내용의 주소가 bbb.com으로 바뀌었다는것을 감지하고 인덱스된 aaa.com의 주소를 자동으로 bbb.com으로 변경시켜 줍니다.

이럴경우 ‘aaa’라는 키워드로 aaa.com이 검색결과에 나오던것이 bbb.com으로 나오게 되는 것입니다.

이렇게 되면 사이트 관리자는 손쉽게 검색엔진에 변경된 사항을 적용할수 있게되고 검색엔진을 통해 유입되는 트래픽을 잃지 않게 됩니다.

그외에 www.aaa.com을 ‘www’가 빠진 aaa.com으로 지정하고 싶다던지 www.aaa.com/product.html?a=samsung&b=galaxy&c=tab 같은 url을 www.aaa.com/samsung/galaxy/tab 같이 읽기 쉬운 형식으로 바꾸고 싶을때 유용하게 쓰입니다.


[302 temporary redirect]


302 redirect는 현재 페이지나 사이트를 일시적으로만 옮겼다는것을 말해줍니다.

 

대부분 javascript를 이용한 redirect, 메타태그(< meta http-equiv="refresh" content="0;url=http://새로운주소.com" />)를 이용한 redirect 또는 각각의 프로그래밍 언어를 사용한 단순 redirect가 이에 포함됩니다.

aaa.com 소유자가 bbb.com으로 사이트를 옮겼는데 잘모르고 302 redirect를 해주게 되는경우 사용자는 자동으로 옮겨가게 되지만, 크롤러는 사이트가 옮겨갔다는것을 감지하더라도 일시적으로만 옮겨간것으로 간주하기 때문에 검색결과에 아무런 변화를 주지 않게 됩니다.

그래서 특정 키워드로 검색을 했을때 aaa.com이 나오던것이 bbb.com으로 업데이트되지 않게 됩니다.

간혹 이것을 악용하여 특정 키워드로 최적화된 페이지를 방문한 사용자를 자동으로 페이지와 전혀 상관없는 광고성 페이지로 옮겨가게 만드는 경우도 있습니다.

구글은 이를 doorway page로 여겨 페널티를 부과하기때문에 302 redirect를 사용할때에는 잘 생각해보시고 사용하시기 바랍니다.

대부분의 경우 302 보다 301 redirect를 사용하시는것을 추천합니다.


301 redirect 사용방법
301 redirect 사용방법에는 여러가지가 있습니다.
사용하는 프로그래밍 언어에 따라 약간씩 틀리고 .htaccess 파일 수정을 통해 mod_rewrite을 사용할수 있습니다.


0. apache 에 직접 등록시

<virtualhost> 와 </virtualhost> 사이에 아래의 룰을 추가

Redirect 301 / http://연결될도메인.com



1. PHP redirect

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );
?>

2. JSP(Java) redirect

< %
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%>

3. ASP.NET redirect

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.new-url.com");
}
</script>
4. ASP redirect
< %@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.new-url.com/"
%>

5. Ruby on Rails redirect

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end

6. CGI Perl redirect

$q = new CGI;
print $q->redirect("http://www.new-url.com/");

7. .htaccess mod_rewrite

RewriteEngine on
RewriteRule (.*) http://www.new-url.com/$1 [R=301,L]

.htaccess의 mod_rewrite 같은 경우 사용법이 훨씬 다양하며 자세한 내용은 http://httpd.apache.org/docs/current/mod/mod_rewrite.html를 참조하시기 바랍니다.



계정하나에 두개의 도메인을 각각의 서브폴더에 연결시키는 방법은

제가 알기로, (틀릴수도있음)
1. 루트의 메인페이지에 메타정보세팅을 하여 접속즉시 자동(순간이동?)으로 특정 폴더로 이동 시키는 방법
2. 루트의 메인페이지에 php코드를 삽입하여, if~, else등으로 url에 따라서 특정 폴더로 이동시켜주는 방법
이 있는데요,

위 두가지 방법은 검색해보시면, 많이 나오는데,
.htaccess 파일을 세팅해서 할 수 있는 방법은, 잘 없기에, 간단한 예를 소개해 올립니다..

예) 이해를 쉽게하기위해, 제로보드xe와 텍스트큐브(테터툴즈블로그)를 동시에 설치하고,
각각의 도메인으로 접속하는것을 예로 했습니다..

aaaa.com --------------> /zbxe/ 폴더로 접근 (제로보드xe가 뜨겠죠)
bbbb.co.kr --------------> /tc/ 폴더로 접근 ( 텍스트큐브가 뜨겠죠)

계정의 루트( / )에 .htaccess 파일을 아래의 노란부분과 같이 만들어서 올려주시면 됩니다.
도메인별, 폴더별로 빨강글씨부분이 달라지는 부분입니다.

주의 1) 제로보드xe, 텍스트큐브등을 설치하면 .htaccess 파일이 생기는데, 그 파일들과 혼동하지마세요,
그 파일들은 설치후 각각 zbxe, tc 폴더내에 있는 것이고, 지금 만들어서 올리는건 루트( / )에 있어야 할 파일
입니다.)

주의 2) .htaccess 의 제어는 호스팅계정마다 지원할 수도, 안할 수도 있습니다.. 저는 까페스물넷계정인데, 잘 적용하여
쓰고있고, 말많은 파랑호스팅에서도 되는거 확인했습니다..


RewriteEngine On

RewriteCond $1 !^(zbxe)/
RewriteCond %{HTTP_HOST} ^aaaa\.com [NC]
RewriteRule ^(.*)$ /zbxe/$1 [L]

RewriteCond $1 !^(tc)/
RewriteCond %{HTTP_HOST} ^bbbb\.co\.kr [NC]
RewriteRule ^(.*)$ /tc/$1 [L]

 

위와 같이 만들어 올려주시면 되고요,
자세한 설명은 없습니다.(^^) 제가 초보라서..

 

위는 메인 도메인 2개가 다를 경우 각각 정해진 위치에 링크하는 방법이고

각각의 메인 도메인에 서브 도메인이 추가 존재할 경우 아래 예시 처럼 하면 됩니다.

 

RewriteEngine On

RewriteCond $1 !^(dir01\/dir01-1)/
RewriteCond %{HTTP_HOST} ^go\.aaaa\.com [NC]
RewriteRule ^(.*)$ /dir01\/dir01-1/$1 [L]

RewriteCond $1 !^(dir02\/dir02-2)/
RewriteCond %{HTTP_HOST} ^to\.bbbb\.co\.kr [NC]
RewriteRule ^(.*)$ /dir02\/dir02-2/$1 [L]

 

참고하실 사이트는

http://www.htaccesseditor.com/kr  원하는 기능을 .htaccess 파일로 자동으로 생성해주는 기능사이트(그런데, 별기능없음)

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html  아파치 URL Rewriting Guide (한글)

등이 있겠네요.. 도움되시는 분 있다면 좋겠습니다..

PS.. 참, 저렇게 하면, 첫페이지의 상단 url이 짧게 줄어드는 효과가 있습니다..
http://aaaa.com/zbxe 가 아닌, http://aaaa.com 으로 되겠죠.. 아래의 필요없는 세줄을 지우고 쓰시면 되겠네요


www를 붙여서 사용하려면 www\.aaaa\.co\.kr 처럼


<?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);
?>


 

/bin/rm: Argument list too long

파일수가 많은 경우를 삭제하려고 시도할 때 나타나는 메세지이다.
rm 명령어에서 getopt function의 아규먼트 파싱하는데에 최대 수치를 넘어선 것으로 기본적으로 1024개 이상을 핸들링하지 못한다.
이에 대한 대처로 다음과 같은 명령어를 쓸 수 있다.

1. find . -name '파일타입' | xargs rm 또는 find . -name '파일타입' -exec rm -rf {};

2. find . -name '*' -exec rm {} \;


예시) /var/spool/mqueue 디렉토리 하위의 파일들이 삭제되지 않을 경우
find ./q*/ -print | xargs rm

 ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --with-charset=euckr --with-extra-charsets=complex --with-mysqld-user=mysql --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
make
make install

[컴파일 옵션 설명]

--prefix=/usr/local/mysql : 컴파일후 관련된 파일들이 설치되는 디렉토리,기본값 : /usr/local 

 --exec-prefix = EPREFIX : 기본값은  --prefix에서 지정한 값과 동일.

 --bin-dir = DIR : 클라이언트 실핼파일과 스크립들이 저장되는 디렉토리, 기본값은 PREFIX/bin

 --libexec=DIR : mysql 데몬, 기본값은 PREFIX/libexec

 --localstatedir=/usr/local/mysql/data : 사용자의 데이터와 로그파일를 저장할 디렉토리 지정, 기본값은 PREFIX/var

 --with-charset=utf8 : utf8로 charset 지정. utf-8로 하면 에러.

 --with-extra-charsets=all : 추가 charset 지정, none,complex,all 또는 charset 리스트

 --with-unix-socket-path=/tmp/mysql.sock : 소켓디렉토리 , 기본값은 /tmp 또는 /var/run

 --with-tcp-port=3306 : 포트 지정. 기본값은 3306

 --with-mysqld-user=mysql : 데몬실행 계정 지정

 --with-debug : debug code추가 , 사용안하는 경우 without 옵션으로

 --without-readline : 콘솔에서 한글 입력가능

 --enable-thread-safe-client : 쓰레드 지원

 --without-server : 서버 기능 없이 클라이언트로만 사용하고자 할 때 즉 클라이언트로만 사용할 때

 --enable-assembler : 어셈블러  함수 지원

 --with-client-ldflags=-all-static : 클라이언트 실행 파일 생성시 라이브러리를 포함하도록 지정, 정적으로 컴파일

 --with-mysqld-ldflags=-all-static : 데몬실행파일 생성시 라이브러리를 포함하도록 지정,정적으로 컴파일

 --sysconfdir=/etc : 설정파일 디렉토리지정

 --with-mit-threads : 강제로 MIT-pthreads 를 실행하고자 할때


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 하면 된다.


개요 : 최신 트렌트는 모바일용 홈페이지가 대세인데 이를 구현하기 위한 몇가지 설정에 대한 정리를 하고자 한다.


1. 모든 모바일페이지 (*.html, *.php 문서 해당) 의 <head> </head> 사이에 아래 내용을 정의한다.


<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">


위 태그는 작성된 웹문서를 모바일 디바이스의 해상도에 맞게 표현해주는 태그다.


2. 모바일 페이지/모바일 홈페이지 자동 리다이렉션 (기존 운영된 홈페이지의 index 파일 최상단에 아래 내용 정의한다.)


[Java Script 버전]

 <script type="text/javascript" language="JavaScript">

var mobileKeyWords = new Array('iPhone', 'iPod', 'BlackBerry', 'Android', 'Windows CE', 'Windows CE;', 'LG', 'MOT', 'SAMSUNG', 'SonyEricsson', 'Mobile', 'Symbian', 'Opera Mobi', 'Opera Mini', 'IEmobile');

for (var word in mobileKeyWords){

if (navigator.userAgent.match(mobileKeyWords[word]) != null){

window.location.href = "이동할 주소";

break;

}

}

</script>

 


[PHP 버전]

<? php

$mobileKeyWords = array ('iPhone','iPod','BlackBerry','Android','Windows CE','Windows CE;','LG','MOT','SAMSUNG','SonyEricsson','Mobile','Symbian','Opera Mobi','Opera Mini','IEmobile');

 

for($i = 0 ; $i < count($mobileKeyWords) ; $i++)

{

if(strpos($_SERVER['HTTP_USER_AGENT'],$mobileKeyWords[$i]) == true)

{

header("Location: http://이동할주소");

exit;

}

}

?>

 


3. .htaccess 파일 정의 (기존 index 파일이 위치한 동일 경로에 생성)


RewriteEngine On

RewriteCond $1 !^(m)/
RewriteCond %{HTTP_HOST} ^m\.domain\.com [NC]
RewriteRule ^(.*)$ /m/$1 [L]


위 내용을 .htaccess 파일로 저장하면 된다.