PHP 에 eclipse 를 활용한 개발환경을 만들자. aptana 를 쓰면 한방에 해결. 1. JRE 가 필요하다. eclipse 는 java 기반이라 JRE 가 필요하다. 자바개발환경이 아니니, JSDK 까지는 필요없고, JRE 만 있으면 된다. http://java.sun.com/javase/downloads/ 
에서 "Java Runtime Environment (JRE) 6 Update 7" 를 다운받고 설치. 2. Aptana 를 설치. http://www.aptana.com/studio/download  : aptana studio 를 설치한다. 자신의 환경에 맞는 파일을 다운 받는다. 참고로 설치가 필요없는 zip 버전을 다운 받았다. 다운 받은 파일을 적당한 위치에 압축을 푼다. 해당폴더의 AptanaStudio.exe 파일을 실행한다. 3. PHP 플러그인 설치 처음 실행하면 Aptana Start Page 라고 나온다. 플러그인 PHP 부분의 'install' 을 눌러 설치한다. 4. SFTP 플러그인 설치. (Secure FTP)플러그인 좀 설치해봤다. 라는 사람에게는 굳이 설명할 필요는 없겠죠. sftp 업데이트 Site URL 을 http://update.aptana.com/install/sftp_deprecated/3.3  로 하면 됨. 그래도 설명하자면. # Help -> Software Updates -> Find and Install 을 눌러서 업데이트 항목으로 이동. # 그냥 아래것을 선택하고 Next > # 맨위의 New Remote Site 를 눌러 , Name(아무거나) , URL 은 http://update.aptana.com/install/sftp_deprecated/3.3  을 입력한다. OK 를 누르고, Finish 를 눌러서 설치한다.(창이 뜨면 클릭해서 넘어가면 된다. 특별한 사항은 없다.) 5. SFTP 설정. ftp 는 기본으로 지원한다. sftp 는 위처럼 플러그인을 깔아야 한다. ( 왜! ftp 안쓰고 sftp 쓰느냐는 묻지마세요. telnet 안쓰고 ssh 쓰는 이유라는 짧은 답이 나갑니다. ) 클릭클릭해보면 되지만, 자세한 설명을 보고 싶다면... # Add New SFTP[Free] Site... 를 클릭. # Site name 은 아무거나 쓰고, Server 는 접속하려는 서버 아이피나 도메인주소 Username , Password 를 입력하고 OK 완료되면 다음과 같이 서버의 리스트를 볼 수 있고 수정할 수 있게 된다. # sftp 의 파일을 더블클릭하면. 이런식으로 편집을 할 수 있게 됩니다. SVN 을 쓰고 싶은데, 서버환경이 안되서 SFTP 로 만족하며 쓸려고 설정함. SVN 한번 해달라고 졸라보고, 해주면 SVN 으로 다시 설정해서 쓸지도 모름. zend framework 를 하기 위해 기본환경 세팅(이런 세팅도 지겹지. ㅜㅜ , aptana 가 있어 쉽게. 고맙다 aptana)  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/445
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
보통 데이터를 엑셀형태로 다운로드하고자 할때 다음과 같은 헤더를 사용한다.
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");
header("Content-Description: PHP4 Generated Data"); 헤더를 먼저 뿌려주고, 데이터를 출력해서 엑셀형태로 다운받게 된다. 그런데, 위와 같은 동일한 코드에서 IE6 에서는 정상적으로 다운로드 받지만, IE7 에서는 다운받지 못하는 현상이 있다. 위와 같이 다운로드를 시도하는데, 끝내 다운받지 못한다. 현재까지 header 옵션을 여러가지로 바꿔보며 테스트 중인데, 해결책은 아직 찾지 못했다. 헤더로 해결한 문제는 아닌듯 싶다.(IE7 의 다운로드 정책(?)의 변화가 있나싶다) 좀더 해결책을 찾아보고 안되면 임시로 xls 파일을 생성하고, 생성된 파일을 직접 링크로 다운받는 방법으로 해결해야 겠다. # 추가 : 1월 8일 윈도우 비스타 IE7 에서 테스트 하면 정상적으로 다운로드 됨. 윈도우 XP IE7 에서는 비정상적으로 다운로드 실패. 아마도 윈도우 XP IE7 의 버그인듯.  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/389
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
-
Tracked from 힘쎈북극곰&효댕`s Talklog,
2008/01/13 03:15
삭제
안녕하세요.이걸 강좌로 올려야 할지 말아야 할지 고민 하다가 올리게 되는군요.어쨌던 읽어보시기 전에, 포럼이라고 생각하시고, 서로 확증이 되는 방법에대해서 리플로 달아서 최적화 상태로 잘 썼으면 하는 바램에 올려봅니다. 일단 IE6을 쓰다가 웹마, 사파리 등등을 넘나들면서 아쉬웠던 부분을훌훌 털어준 IE7의 탭 브라우징 기능.이 기능 하나만 가지고 만족하면서 써왔었습니다. 올라오면서, 탭 브라우징 뿐만이 아니라, 악성코드랑 ACTIVEX 무분별 설...
apache2 , php5 를 기준으로 php 환경변수가 적용되는 몇가지 방법을 정리한다. (ubuntu 를 기준으로 설명한다) apache -> php module 을 로딩할때 php 의 환경변수를 읽어온다. 보통 /etc/php5/apache2/php.ini 파일에 해당 환경변수가 저장되어 있다. 파일업로드 최대사이즈를 조정하는 것을 예로 설명한다. 파일 업로드 사이즈에 관련된 옵션은 upload_max_filesize memory_limit post_max_size 의 옵션을 조정해야 한다. 1. php.ini 파일에서 직접 조정한다. 이때 전체 apache 설정에 적용된다. 2. apache.conf 에서 조정한다. ubuntu 는 php 부분을 /etc/apache2/mods-enabled/php5.conf 에 <IfModule mod_php5.c>
</IfModule>
탭 사이에 php_value upload_max_filesize 10M
php_value memory_limit 10M
php_value post_max_size 10M
값을 추가해 준다. 이때도 마찬가지로 전체 apache 설정에 적용된다.
3. 가상호스트(virtualhost) 를 사용하는 경우 각 virtualhost 탭 내에 넣을 수 있다. <IfModule mod_php5.c> php_value upload_max_filesize 10M php_value memory_limit 10M php_value post_max_size 10M </IfModule> 이떄는 개별 가상호스트 별로 다른 설정값을 적용할 수 있다. (비슷하게 .htaccess 에 넣어줘도 될 듯 - 테스트는 안 해봤음) 4. php 어플(프로그램) 내에서 변경(ini_set) ini_set("upload_max_filesize" , "10M"); ini_set("memory_limit" , "10M");
ini_set("post_max_size" , "10M");
이런식으로 해준다. 값 변경 확인은 ini_get("post_max_size"); 으로 확인할 수 있다. 위와 같이 하면 될까? 되기도 하고 안되기도 한다. http://kr2.php.net/manual/en/ini.php  를 보면, changeable 항목이 PHP_INI_ALL 일때 변경이 된다. PHP_INI_ALL 이 아닌 항목은 위의 방법(1~3)으로 변경한다.(.htaccess 파일이 제일 편할 듯)  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/386
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
php 의 함수중 하나인 flush , sleep 의 사용에 있어서 참고사항. 어찌보면 중요한 사항은 아니지만, 작동에 이상이 있는 경우 살펴볼 사항을 정리한다. 서버푸시 방법에 주로 쓰이는 flush, sleep(usleep 은 micro second) sleep(1) == usleep(1000000) 작은 차이로 인해, 예상했던 결과가 나오지 않는 경우 참조할 사항들을 몇가지 정리한다. php 함수를 쓰다보면, 간혹 그런 경우가 있다. 그런 사항들을 발견하는데로 시리즈(?)로 정리를 해보도록 한다. 강좌로 하기에는 너무 자잘한 것들이고, 팁정도면 적당하겠다.(그것도 1원짜리팁 ^^) 예를 들어 다음과 같은 코드가 있다.(kr.php.net : sleep 함수 예제  ) 그냥 코드를 보고 출력을 예상하길 첫번째 date 내용이 출력되고
10초간 지연되었다가, 다음 date 내용이 출력될 것으로 예상할 것이다. 그 답은 맞기도 하고 틀리기도 하다. 즉, 상황에 따라 다르다. php console 에서 실행시키면 잘 나올 것이다. 그런데, 브라우저에서 해당 코드를 실행시키면 나오지 않을 수도 있다. sleep() 코드 위에 flush() 를 넣으면 되기도 하지만, 아닐 수도 있다. 그것은 왜 그럴까? # 버퍼에 작동방식(?)에 따라 다르다.브라우저에서 실행되는 경우를 살펴보면 브라우저 <--> 웹서버 <--> php 모듈 <--> php 코드 의 경로를 통해 실행이 된다. 이 때 출력되는 데이터는 버퍼에 따라 다르게 처리된다. 그리고 해당 버퍼는 웹서버, php , 브라우저 마다 다르게 된다. IE 의 경우는 256 byte 이상의 버퍼가 찬 후에 해당 코드가 적용된다. 위 코드 위에 echo str_pad(" " , 256); 같은 코드로 빈 공백을 먼저 출력해 주고 실행해 보면 정상작동 한다. # 또 브라우저의 HTML 코드 랜더링 방법의 차이로 인해 달라지는 경우도 있다.다음과 같은 코드가 있다. 1초마다 한 라인씩 출력되는 것을 예상하는가? 그런데, IE 에서는 10초후에 한번에 출력된다. 그것은 IE 의 table 태그 해석의 차이때문이다. IE 는 <table> 태그후에 </table> 이 나올때까지 브라우저에 표시하지 않는다. (파이어폭스 등 모질라 계열은 바로 보여준다) 그외 더 있는지 살펴보고 추가할 것은 추가할 예정.  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/364
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
이미 알고 있는 내용일 듯 하지만, 정리겸 글을 남깁니다. php 에서 form 전송후 실패하거나, 오류가 났을 경우 뒤로가기(history.back) 를 합니다. 그때 이미 썼던 내용이 사라져버려 사용자에게 불편을 줍니다. 이를 해결하기 위해 뒤로가기를 다른 방식으로 처리하거나, iframe 이나 새창으로 form 을 넘기거나, 그외 여러방법을 동원하는 경우도 있습니다. 그러나, 이를 해결하는 방법중 쉬운(?)것은 옵션으로 조정하는 것이 가장 좋을 듯 합니다. 보통 form 전송시에 옵션을 조정하면 됩니다.  (form 예시) 이런 내용을 입력하는 문서(php)의 맨 처음에 session_cache_limiter("private_no_expire"); 를 추가합니다. 여기까지는 기존의 나와있는 문서에 비슷하게 나와있습니다. session_cache_limiter("private"); 나 session_cache_limiter("public"); , session_cache_limiter("nocache"); 등의 옵션이 있음. 그런데, 저런식으로 했는데, 작동을 안하는 경우가 있습니다. 그 이유는 바로 session_start(); 라는 부분입니다. session_start(); 가 있는 항목 위에 위 코드를 삽입합니다.(session_start 보다 먼저 나와야 합니다) 그런데, 이 경우에도 안되는 경우가 있습니다. php.ini 파일의 session 항목에 ; Initialize session on request startup. session.auto_start = 0
다음과 같이 자동으로 session start 할 것인가 하는 옵션이 있습니다. session.auto_start = 1 ; 처럼 설정해서 사용하는 경우 위의 옵션이 되지 않습니다. 먼저 session_start 상태가 되기 때문에 , session_cache_limiter("private"); 가 먹히지 않기 때문입니다. 그래서 php.ini 의 옵션을 session.auto_start = 0; 로 해주고, session_start(); 를 이용해 세션을 시작해야 합니다. 이 부분만 주의하면 이 문제를 해결할 수 있을 것입니다. 참고 : 기본 php.ini 에서 session.auto_start = 1 ; 로 사용하던 경우 코드를 수정해야 할 부분이 많아서 적용하지 못하는 수가 있다. 해당 서버에 virtual host 로 다수의 사이트를 운영하는 경우(웹호스팅) 더욱더 적용이 어렵게 된다. 이 경우 apache2 의 virtualhost 를 사용해 특정 사이트(도메인)에 대해 옵션을 다르게 적용해서 처리할 수 있다. <VirtualHost> </VirtualHost> 사이에 php_value 옵션으로 처리한다. 사용법은 php_value {옵션값} 으로, 무척 간단하다. 예로 흔히 사용하는 옵션을 보면. php_value register_globals 0 php_value session.auto_start 0 처럼 사용한다. 위의 session_cache_limiter("private"); 를 사용하기 위해 session.auto_start 는 0 으로 설정하고 코드상에서 session_start(); 를 해주는 방식을 사용한다. 서버내의 사이트 전체 적용보다 코드를 수정할 부분이 적어져 단계적으로 적용할 때 사용한다.  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/314
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
http://channy.creation.net/blog/?p=403 의 글 마지막 부분에 언급된 php 관련. 여러 보안 이슈와 함께 위의 글을 접하고 느낀 것은 php 개발자 그룹은 폐쇄적인 것인가? 외부의 소리를 들으려 하지 않는 것인가? PHP on IIS7 언급된 말대로 10배의 성능차이. ( 너무한다 ) php 는 주로 LAMP( Linux + Apache + MySQL + PHP ) 라 불리워졌다. 그런데, 리눅스 대신 윈도우 플랫폼을 쓰기도 했다. 성능상의 문제로 FastCGI 방식을 활용하기도 한다. 이런방식이 리눅스보다 성능우위를 보인다는 이야기도 있다. php 를 사용하는 웹사이트가 많긴 많은가 보다(정확한 통계인지는 모르겠지만) 요즘 70% 정도의 웹 사이트가 PHP로 개발되고 있고 20%만이 윈도우 기반이라고 합니다 php 가 앞으로 더 많은 사용자를 확보하기 위해서 성능문제는 해결해야 한다. 지금도 FastCGI 같은 방식으로 처리하기도 하지만, PHP on IIS7 이 어떤 영향을 줄 것인가? 보안이슈와 함께 자극제가 되길 바란다. (php 보안 이슈 - 계속 발표되고 있습니다.)
 ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/258
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
Stefan Esser 가 PHP 의 보안이슈들을 발표하기 시작했습니다. http://www.php-security.org  에서 공개합니다. 그에 대한 한글 설명은 http://swbae.egloos.com/1519302  - 1~3 http://swbae.egloos.com/1519431  - 4,5 에서 보실 수 있습니다. (thanks to 헐랭이  ) PHP core 개발자그룹에 그간 행동에 대해 대충이나마 감을 잡으시려면, http://kldp.org/node/76184  를 참조하시기 바랍니다.(판단은 본인이..) Stefan Esser 은 PHP 의 보안관련 리포팅을 담당했고 수호신(suhosin) 이라는 제품을 만들었습니다. http://monac.egloos.com/917922 http://swbae.egloos.com/1413859  이 the Month of PHP Bugs 가 당장은 혼란을 일으키겠지만, 결국에는 PHP 그룹에 이득이 될 것으로 생각됩니다. (PHP core 개발자 그룹에서 어떻게 반응을 할지 궁금하네요.) 호스팅업체쪽은 신경을 써야 겠습니다.(심하게 말하면 난리나겠음) 그외.. http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=forum&wr_id=108677  [추가내용] 3일차 6,7 버그가 발표되었습니다. http://swbae.egloos.com/1520240  (thanks to 헐랭이  ) 8,9 버그 발표 http://swbae.egloos.com/1520466  (thanks to 헐랭이  ) 10, 11 버그 발표 http://swbae.egloos.com/1521068  (thanks to 헐랭이  ) 계속 추가됩니다.  ( 0)  ( 0)
트랙백 주소 :: http://taemy.experlab.com/trackback/202
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %
이전편 1회에 이어서..처리순서를 간단히 정리하자면.(1회의 언급한 내용)
- 업그레이드 전 dump (euckr , utf8 확인)
- mysql 업그레이드 ... ( 3.x , 4.0.x -> 4.1.x or 5.x )
- set names euckr 명시 (euckr 환경인경우)
- table 의 Engine , Charset 를 조정.
- 덤프 데이터 restore
- 확인.
# 위 업그레이드 절차를 좀더 자세히 설명한다.- 업그레이드 전 dump (euckr , utf8 확인)
- 명령은 간단한다.(추가적인 옵션등은 검색)
- mysqldump {DB_name} > DB_name.sql
- mysqldump {DB_name} -u {user_name} -p{password} > DB_name.sql
- mysqldump -F -n --add-drop-table {DB_name}> DB_name.sql
- mysql 업그레이드 ... ( 3.x , 4.0.x -> 4.1.x or 5.x )
- 각 배포판, APM 배포판 별로 업그레이드 한다.
- 위 단계에서 dump 파일이 있으니, 안심해도 된다.
- 다시 롤백을 해야할 상황은 없길 바란다.
- set names euckr 명시 (euckr 환경인경우)
- dump 파일을 euckr , utf8 에 맞게 iconv 같은 것으로 변환을 하는 경우도 있는데, 굳이 필요 없다.
- 이전 환경이 euckr 이면 dump 파일 맨 위에 "set names euckr" , utf8 이면 "set names utf8" 이라고 한줄 추가해 준다.
- table 의 Engine , Charset 를 조정.
- 4.0.x 를 덤프하면 create table 부분에 " ) Type=MyISAM " 이라고 되어 있을 것이다
- 덤프파일에서 Engine , Charset 을 적절히 바꾼다.
- " ) ENGINE=InnoDB DEFAULT CHARSET=euckr " 형태로 바꾸어 준다.
- 각각 InnoDB/MyISAM , euckr/utf8 로 적절한 환경으로 바꾸어 준다.
- 덤프 데이터 restore
- 위 수정된 덤프파일을 저장한다.
- mysql {DB_name} < DB_name.sql 으로 복구한다.
- 확인(my.cnf 등의 옵션 조정)
- 데이터가 이상없는지 확인.
- euckr 환경인 경우
- my.cnf 의 mysqld 항목에 init_connect = 'set names euckr' 를 추가한다.
- utf8 환경이라도 init_connect = 'set names utf8' 이라고 넣어주는 것이 좋다.
- php 에서 위 설정을 해주지 않으면 latin1 으로 기본 설정된다.
- chartset 에 관한 부분은 추후 더 정리할 예정.
# 업그레이드시 주의사항
- 테이블 charset 변경시 : alter table {테이블명} convert to character set utf8 명령으로 하면.
- multibyte 를 사용하는 db 의 경우 필드 값이 반으로 줄어 버림
- 그래서 dump 로 처리하는 것이 좋음
- 덤프파일의 create table 항목의 charset 을 변경하는 방식으로 처리.
- 4.0.x 에서 dump 시 euckr , utf8 인지 확인
- euckr 인 경우 덤프파일의 맨위에 set names euckr , utf8 은 set names utf8 를 삽입
- 이부분만 주의하면 무리없이 진행가능.
- php 에서는 기본이 latin1 으로 잡힘
- my.cnf 에 default-character-set 을 설정확인.
- init_connect ='set names euckr' 최종 값이 설정됨.
- init_connect 가 php 의 설정에 영향을 미침.
- dump 파일의 ENGINE , CHARSET 을 변경가능 (InnoDB , MyISAM) , (euckr , utf8)
ps. 좀더 자세한 설명이지만, 배포판별 mysql 업그레이드 방법, 세부 mysql 옵션등의 설명은 생략하였다. 더 자세한 설명은 메뉴얼을 참조한다.  ( 0)  ( 0)
|
댓글을 달아 주세요