태그 : 테스트환경

Apache(2.2.11) + php(5.2.8) + pecl(5.2.6) + xdebug(for php5.2.8) + DB드라이버(pgsql,mysql) [windows]메모

#결론: 비스타에서 xdebug의 리모트 조작(스텝실행)은 동작안함 2009.09 현제#

VISTA에서 xdebug를 기동시키면 apache가 떨어지는 문제가 보고되고 있다.
mod_rewrite와 충돌이라는 의견이 보고된다(그렇지 않은 페이지에선 아파치가 떨어지지 않았다.)
거의 6-8개월간 같은 문제에 나조차도 디버깅에 어려움을 겪고있다.
머 윈도에서 개발시 여러 문제에 부딛치는데. 예를 들면 tail 이나 메일 같은것도 문제이다...흠 이참에 본격적인 해결책을 적어본다.
1.VM을 통한 리눅스 설치(리소스를 많이 먹는다....)
2.cygwin (개인적으로 차라리 VM이 나을듯...)
3.Colinux (처음 듣는다. 1,2 번의 장점을 합쳤다는듯한 ...)
3번을 한번 도전해 볼라 한다.....무한 삽질을 예상하며 -,.-

3번도전결과 리뷰평과는 다르게 엄청난 반응 속도에 포기 했다. VM으로 설치했을때보다 더 느린 감이 든다.
2틀째 삽질중 초심으로 돌아가 아파치 로그를 체크해 보았다.
그중 Xdebug MUST be loaded as a Zend extension in Unknown on line 0
이러한 에러가 출현했음을 감지했다. 첨엔 분명 xdebug띄웠는데 왠 씨나라 까먹는 소리인가 했지만.
초심으로 돌아간 필자는 친절한 구굴선생에게 물어보았더니
xdebug는 모듈(익스텐션)으로 로드하면 NG. 이하와 같이 다른 컨텍스트로 로드 해야 한다고 한다.
;extension=php_xdebug-2.0.4-5.2.8.dll ;코멘트 아웃
zend_extension="C:\PHP5.2.8\ext\php_xdebug-2.0.4-5.2.8.dll"
;익스텐션과 다른 컨텍스트이므로 풀패스로 지정

이로써 에러는 없어 졌다. 그리고.....완벽히 동작하기 시작했다. 스텝실행도 부활..2틀간 삽질...T-T. 하지만 비스타 이슈는 아직 완전히 해결 되지 않았다... 머 전과 똑같나 -,.-

Apache + php + pecl + xdebug (windows) 위 패키지를 설치함에 있어서 현재의 로컬 테스트(디버그) 환경에서 자주 접속이 끊켜, 정리할겸 메모
일단 추정되는 문제는 xdebug버전 호환성이 아닌가 싶다

Apache-2.2.11: 최신 버젼에서도 별 문제 없음 . 간섭도가 가장 낮은 구성품. 허나 php는 5.2.x이상을 해야 될지 싶다.

PHP-5.2.8:
최신버젼(작성당시 5.2.9)도 PECL은 문제 없다 하나 xdebug가 최신버전(2.0.4)에서 php5.2.8로 확인됬다 하니 이버젼을 선택
PECL-5.2.6:현재 5.2.6호환성 대응버젼이 최신, php5.2.8 등에서는 5.2.6용을 써도 무난하다 나옴.DB, PDO,memcache등을 해결해줄 패키지
xdebug-2.0.4:위에 언급한대로 최신버젼. php 5.2.8에서 호환성 클리어[]
php_xdebug-2.0.4-5.2.8.dll

그럼 인스톨 시작
1.Apache-2.2.11
기존의 아파치는 정지시키고 언인스톨. (설정 화일이 남는다. 일단 만일을 위해 복사 백업)
설정 파일/폴더가 남는데, 그상태로 신버젼을 인스톨 시키니 설정파일을 그대로 사용. 머 편리하다-_-;
(다만, 신버젼 설정과 merge하는건지 걍 옛버젼 쓰는건지 모르지만 매번 설정하기, 확인이 귀찮아서 패스)

2.PHP5.2.8설치
압축판을 풀고 lib들을 window/system32폴더에 복사(아마 기존것을 덮어 쓸 것이다.)
pear기본 패키지 설치
php설치폴더\php PEAR\go-pear.phar
php.ini를 설정

디버그용 추가
zend_extension_ts=C:\php5.2.8\php_xdebug-2.0.4-5.2.8.dll
xdebug.remote_enable = 1
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

xdebug.manual_url = "http://jp2.php.net"
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *


[php설치폴더]에 lib*로 시작하는 파일들을 [windows]폴더에 복사
복사하지 않으면 DB드라이버들이 로딩 되지 않는다.

3.PECL 5.2.6을 설치
필요한 익스텐션을 [php설치폴더\ext]에 복사
php5.2.8버젼엔 DB용으로는 특별히 복사할 것이 없었다. memcache만 복사.

4.xdebug 2.0.4(for php 5.2.8)
[php설치폴더\ext]에 복사

5. apache 재기동

점검
로딩되지않은 php 모듈이 있다면 아파치 로그등을 참조해서 해결.

xdebug디버그 모듈 을 넣기전 에러 표시


xdebug디버그 모듈 을 넣은 후 에러 표시

스택이 추적되는 것을 알 수 있다.

거기에 메서드와 변수의 값 들의 내용도 알 수 있다!






by 나야나 | 2009/05/14 13:00 | *nix/OSX | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶