'php'에 해당되는 글 11건
- 2008/07/26 초간단 PHP, eclipse 개발환경 (aptana , sftp)
- 2008/01/06 엑셀 다운로드(php) - IE7 에서 이상동작(3)
- 2007/12/21 php 환경변수를 적용하는 몇가지 방법(apm)
- 2007/09/28 php 에서의 flush , sleep 사용시 주의사항
- 2007/05/28 php 폼(form) 전송후 뒤로가기(history.back) 시에 내용 살리기 정리(2)
- 2007/03/28 PHP on IIS7 - 그 향방은?
- 2007/03/02 PHP 의 보안을 까발린다. the Month of PHP Bugs.
- 2007/02/25 mysql 의 버전 업그레이드에 관한 이슈 총정리(2회)(2)
- 2007/02/22 mysql 의 버전 업그레이드에 관한 이슈 총정리(1회)
- 2007/02/17 웹프레임워크 비교(Java, Rails, PHP)(1)
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 로 하면 됨.
그래도 설명하자면.
5. SFTP 설정.
ftp 는 기본으로 지원한다. sftp 는 위처럼 플러그인을 깔아야 한다.
( 왜! ftp 안쓰고 sftp 쓰느냐는 묻지마세요. telnet 안쓰고 ssh 쓰는 이유라는 짧은 답이 나갑니다. )
클릭클릭해보면 되지만, 자세한 설명을 보고 싶다면...
SVN 을 쓰고 싶은데, 서버환경이 안되서 SFTP 로 만족하며 쓸려고 설정함.
SVN 한번 해달라고 졸라보고, 해주면 SVN 으로 다시 설정해서 쓸지도 모름.
zend framework 를 하기 위해 기본환경 세팅(이런 세팅도 지겹지. ㅜㅜ , aptana 가 있어 쉽게. 고맙다 aptana)
Trackback : http://devlog.experlab.com/trackback/445
-
eclipse 와 sftp sync 용 플러그인...
| 2008/12/12 19:24
며칠간 여러가지 툴을 사용해봤는데... 단연 Aptana Studio 에서 제공하는 sftp 플러그인이 완벽하였다. 하나의 프로젝트에 SVN(subversion)과 함께 sftp를 이용한 sync가 가능했다. 즉, 이클립스와 별도의 SFTP어플리케이션을 사용하지 않고, Aptana Studio 에서 제공하는 플러그인으로 다음과 같은 개발환경이 이클립스 하나로 구축되었다. 1. 배포사이트에 레포지터리에서 svn으로 소스를 받아서 수정하고, 2. sft..
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 의 버그인듯.
-
-
guest 2008/10/14 23:21
header( "Content-type: application/vnd.ms-excel; charset=euc-kr"
;
header( "Content-Disposition: attachment; filename=목록.xls" );
header( "Content-Description: PHP4 Generated Data" );
print("<meta http-equiv=\"Content-Type\" content=\"application/vnd.ms-excel; charset=euc-kr\">"
;
안되다가 이렇게 하니까 되네요;
Trackback : http://devlog.experlab.com/trackback/389
-
[IE7 최적화] IE7 프리징 현상 줄이는 설정법
| 2008/01/13 03:15
안녕하세요.이걸 강좌로 올려야 할지 말아야 할지 고민 하다가 올리게 되는군요.어쨌던 읽어보시기 전에, 포럼이라고 생각하시고, 서로 확증이 되는 방법에대해서 리플로 달아서 최적화 상태로 잘 썼으면 하는 바램에 올려봅니다. 일단 IE6을 쓰다가 웹마, 사파리 등등을 넘나들면서 아쉬웠던 부분을훌훌 털어준 IE7의 탭 브라우징 기능.이 기능 하나만 가지고 만족하면서 써왔었습니다. 올라오면서, 탭 브라우징 뿐만이 아니라, 악성코드랑 ACTIVEX 무분별 설...
(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 파일이 제일 편할 듯)
어찌보면 중요한 사항은 아니지만, 작동에 이상이 있는 경우 살펴볼 사항을 정리한다.
서버푸시 방법에 주로 쓰이는 flush, sleep(usleep 은 micro second)
sleep(1) == usleep(1000000)
작은 차이로 인해, 예상했던 결과가 나오지 않는 경우 참조할 사항들을 몇가지 정리한다.
php 함수를 쓰다보면, 간혹 그런 경우가 있다.
그런 사항들을 발견하는데로 시리즈(?)로 정리를 해보도록 한다.
강좌로 하기에는 너무 자잘한 것들이고, 팁정도면 적당하겠다.(그것도 1원짜리팁 ^^)
예를 들어 다음과 같은 코드가 있다.(kr.php.net : sleep 함수 예제)
[code html]
<?php
// current time
echo date('h:i:s') . "\n";
// sleep for 10 seconds
sleep(10);
// wake up !
echo date('h:i:s') . "\n";
?>
[/code]
그냥 코드를 보고 출력을 예상하길 첫번째 date 내용이 출력되고
그 답은 맞기도 하고 틀리기도 하다. 즉, 상황에 따라 다르다.
php console 에서 실행시키면 잘 나올 것이다.
그런데, 브라우저에서 해당 코드를 실행시키면 나오지 않을 수도 있다.
sleep() 코드 위에 flush() 를 넣으면 되기도 하지만, 아닐 수도 있다.
그것은 왜 그럴까?
# 버퍼에 작동방식(?)에 따라 다르다.
브라우저에서 실행되는 경우를 살펴보면
브라우저 <--> 웹서버 <--> php 모듈 <--> php 코드의 경로를 통해 실행이 된다. 이 때 출력되는 데이터는 버퍼에 따라 다르게 처리된다.
그리고 해당 버퍼는 웹서버, php , 브라우저 마다 다르게 된다.
IE 의 경우는 256 byte 이상의 버퍼가 찬 후에 해당 코드가 적용된다.
위 코드 위에
echo str_pad(" " , 256);같은 코드로 빈 공백을 먼저 출력해 주고 실행해 보면 정상작동 한다.
# 또 브라우저의 HTML 코드 랜더링 방법의 차이로 인해 달라지는 경우도 있다.
[code html]
<?php
echo "<table>";
while($i<10)
{
echo "<tr><td>";
echo "$i Line : 1초마다 출력됩니다.";
echo "</td></tr>";
flush();
sleep(1);
$i++;
}
echo "</table>";
?>
[/code]
다음과 같은 코드가 있다. 1초마다 한 라인씩 출력되는 것을 예상하는가?
그런데, IE 에서는 10초후에 한번에 출력된다.
그것은 IE 의 table 태그 해석의 차이때문이다.
IE 는 <table> 태그후에 </table> 이 나올때까지 브라우저에 표시하지 않는다.
(파이어폭스 등 모질라 계열은 바로 보여준다)
그외 더 있는지 살펴보고 추가할 것은 추가할 예정.
php 에서 form 전송후 실패하거나, 오류가 났을 경우 뒤로가기(history.back) 를 합니다.
그때 이미 썼던 내용이 사라져버려 사용자에게 불편을 줍니다.
이를 해결하기 위해 뒤로가기를 다른 방식으로 처리하거나,
iframe 이나 새창으로 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 start 할 것인가 하는 옵션이 있습니다.
session.auto_start = 0
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(); 를 해주는 방식을 사용한다.
서버내의 사이트 전체 적용보다 코드를 수정할 부분이 적어져 단계적으로 적용할 때 사용한다.
의 글 마지막 부분에 언급된 php 관련.
여러 보안 이슈와 함께 위의 글을 접하고 느낀 것은
php 개발자 그룹은 폐쇄적인 것인가?
외부의 소리를 들으려 하지 않는 것인가?
PHP on IIS7
언급된 말대로 10배의 성능차이. ( 너무한다 )
php 는 주로 LAMP( Linux + Apache + MySQL + PHP ) 라 불리워졌다.
그런데, 리눅스 대신 윈도우 플랫폼을 쓰기도 했다.
성능상의 문제로 FastCGI 방식을 활용하기도 한다.
이런방식이 리눅스보다 성능우위를 보인다는 이야기도 있다.
php 를 사용하는 웹사이트가 많긴 많은가 보다(정확한 통계인지는 모르겠지만)
요즘 70% 정도의 웹 사이트가 PHP로 개발되고 있고 20%만이 윈도우 기반이라고 합니다php 가 앞으로 더 많은 사용자를 확보하기 위해서 성능문제는 해결해야 한다.
지금도 FastCGI 같은 방식으로 처리하기도 하지만,
PHP on IIS7 이 어떤 영향을 줄 것인가?
보안이슈와 함께 자극제가 되길 바란다.
(php 보안 이슈 - 계속 발표되고 있습니다.)
Trackback : http://devlog.experlab.com/trackback/258
-
Generic ambien.
| 2010/01/20 01:13
Discount ambien.
-
Ambien.
| 2010/02/26 20:42
Does ambien cause fetal birth defect. Ambien. Ambien lethal. Ambien cr.
-
Klonopin.
| 2010/03/01 23:26
Generic klonopin clonazepam with no prescription. How long does klonopin stay in your system. I shoot up klonopin. Klonopin side effects. Klonopin lynx discussion board. Klonopin.
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 헐랭이)
계속 추가됩니다.
처리순서를 간단히 정리하자면.(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 파일이 있으니, 안심해도 된다.
- 다시 롤백을 해야할 상황은 없길 바란다.
- 각 배포판, APM 배포판 별로 업그레이드 한다.
- 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 의 설정에 영향을 미침.
- my.cnf 에 default-character-set 을 설정확인.
- dump 파일의 ENGINE , CHARSET 을 변경가능 (InnoDB , MyISAM) , (euckr , utf8)
ps. 좀더 자세한 설명이지만, 배포판별 mysql 업그레이드 방법, 세부 mysql 옵션등의 설명은 생략하였다.
더 자세한 설명은 메뉴얼을 참조한다.
Apache 는 1.x 버전에서 2.x 로의 버전 업그레이드가 되었고,
PHP 는 4.x , 5.x 버전으로 업그레이드가 되고 있다. 이제 6 버전이 개발중에 있다.
mysql 의 버전은 3.x 버전을 거쳐, 4.0.x , 4.1.x , 5.x 버전으로 업그레이드가 되었다.
그런데, mysql 의 버전 업그레이드를 하면서 내부적인 변화때문에 데이터의 호환성, 변경 문제를 겪게 되었다.
크게 (3.x ,4.0.x) 와 (4.1.x ,5.x) 의 두 그룹 사이의 업그레이드에 주의하면 된다.
한글 환경을 사용하는 국내에서는 charset(euckr , utf8) 에 조금만 주의를 하면
어렵지 않게 업그레이드 할 수 있다.
약간은 철지난 이슈이긴 하지만, 몇가지 주의사항 및
쉽게 업그레이드 할 수 있는 방법을 정리하고자 한다.
먼저 자신의 환경을 파악한다. euckr 환경인지, utf8 환경인지.
업그레이드시 euckr 환경으로 할지, utf8 환경으로 할지 등을 점검하고 업그레이드 한다.
가장 흔한 조합은
1. euckr 환경에서 사용하다가 업그레이드 euckr 환경을 계속 유지.
2. euckr 환경에서 utf8 환경으로 업그레이드
3. 테이블이 latin1 형식에서 euckr , utf8 환경으로 업그레이드
이 정도일 듯 하다.
가장 쉽고, 최선의 방법은 dump 후 restore 하는 방법이다.(당연하다고? ^^ )
아무튼 무작정 업그레이드 시도하기전에 백업은 필수!!
처리순서를 간단히 정리하자면.
- 업그레이드 전 dump (euckr , utf8 확인)
- mysql 업그레이드 ... ( 3.x , 4.0.x -> 4.1.x or 5.x )
- set names euckr 명시 (euckr 환경인경우)
- table 의 Engine , Charset 를 조정.
- 덤프 데이터 restore
- 확인.
구체적인 방법은 다음회에...(2회 보기)
ps. 총 3-4 회에 걸쳐 정리할 예정.
Tim Bray의 원글 , 한글번역
재미있는 것은 외국에서도 PHP 에 대한 인식이 비슷한 것 같다.
(quick-and-dirty) ^^ ;;;
반면에 ruby 의 Rails 는 (quick-and-clean) ^^
약간의 비교대상의 문제점이 있는 것 같지만,
그냥 평범한 비교로 생각하면 무리없을 것 같다.
요즘은 PHP 쪽에서도 그런 문제에 대한 인식이 있어서 인지
PHP 기반의 프레임워크에 대한 논의,개발이 활발한 것 같다.
(그러나 국내에서는 아직... 우리모두 프레임워크에 대해 토론해 봅시다.)
유지보수성 부분에서도 ^^
PHP 쪽을 스파게티로 표현한다(spaghetti PHP code , HTML , SQL )
나의 결론은 PHP 에서도 프레임워크를 논의할 때이다.
[추가]
python , ruby , php 웹프레임워크 성능 테스트(Django , Rails , Symfony)
- 조금 오래된 테스트(http://wiki.rubyonrails.com/rails/pages/Framework+Performance)
symfony 는 php 웹프레임워크 중에서 성능이 낮은 축에 속한다.
-
낭망백수 2007/06/20 16:15
scaling 이 정확히 무슨 뜻일까요?
scalability 라면 자바보다 뛰어날리가 없다고 생각하는데 말이죠.
다행히 PHP 가 월등한 면이 있긴 있다는 평가로군요. ^^;



이올린에 북마크하기
이올린에 추천하기



Recent Comment