[완료] (CentOS5.5) x86_64 에서 pecl로 설치되는 php용 확장모듈의 문제점/의문입니다..
pecl로 설치하는 php용 확장 모듈로 아래와 같이 설치하였습니다.
# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
gnupg 1.3.1 stable
xdebug 2.0.5 stable
두가지 모두 centos 5.5 i386 환경에서 테스트 했을때는 아무 문제가 없었습니다.
하지만 centos 5.5 x86_64 환경에서는 아래와 같은 문제점이 발생했습니다
1. gnupg
$gpg->seterrormode(gnupg::ERROR_EXCEPTION); 일때, ERROR_EXCEPTION 이 발생하면, Segmentation fault 가 발생함
/var/log/httpd/error_log 내용 : [Thu Jun 24 20:43:41 2010] [notice] child pid 10046 exit signal Segmentation fault (11)
2. xdebug
xdebug가 설치되면 var_dump()가 xdebug_var_dump()로 대체된다고 알고 있습니다..
그래서 xdebug가 설치된후, var_dump()로 출력하면 굳이 앞뒤로 pre 태그를 안 붙여줘도
"예쁘고 보기좋게(다양한 색깔로)" 출력되는걸로 알고 있었습니다..
하지만 첨부한 이미지처럼, x86_64 에서는 xdebug_var_dump()로 해보아도 "예쁘고 보기좋게(다양한 색깔로)" 출력되지 않더군요...
무엇이 문제일까요??
조언 부탁드립니다
첨부 | 파일 크기 |
---|---|
![]() | 44.9 KB |
2. xdebug 문제 자답
xdebug가 제공하는 php함수 xdebug_var_dump() 가 이쁘게(xdebug에서 제공하는 css style 적용되어) 표시되지 않는 문제는 i386, x86_64 시스템에 따른 문제가 아니라, remi 저장소에를 통해 업데이트된 패키지에 의한 문제인것 같습니다.
저는 기본적으로 epel 저장소까지만 enabled=1 설정하여 업데이트를 하여 사용하였습니다(gpgme-devel.x86_64 패키지가 필요해서 epel 저장소를 사용함)
그러다가 위의 '1.gnupg 문제' 를 해결하기 위한 시도로, remi저장소까지 enabled하여 update를 해준것이 xdebug의 var_dump()에 영향을 준것이 아닌가 라는 생각이 듭니다.
포맷재설치(= virtual box 가상머신 스냅샷 복원)의 방법으로 remi저장소가 저장되기 이전, epel까지만 업데이트된 상태로 되돌린후, xdebug의 var_dump() 출력문제는 해결되었습니다
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# rpm -Uvh remi-release-5.rpm
# vim /etc/yum.repos.d/remi.repo 파일을 열어서 enabled=1 로 변경
# yum update <--- 이게 문제였습니다
1. gnupg 문제 중간보고식 불완전 자답
이는 확실히 centos.5.5.i386과 centos.5.5.x86_64 에서 차이를 보이는 문제인듯합니다.
# httpd -v
Server version: Apache/2.2.3
Server built: Apr 4 2010 17:18:37
# php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:39:17)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
gnupg 1.3.1 stable
centos.5.5.x86_64 환경에서 위처럼 httpd와 php가 yum 패키지로 설치된 환경에서는
$gpg->seterrormode(gnupg::ERROR_EXCEPTION); 일때, ERROR_EXCEPTION 이 발생하면, Segmentation fault 가 발생합니다.
----------------------------------------------------------------------
/etc/init.d/httpd stop 명령어로 패키지 설치된 아파치데몬을 중지시키고, 아래와 같이 작업하였습니다
gpgme-devel.x86_64 : yum 패키지 설치 (epel저장소 이용)
httpd-2.2.3.tar.bz2, php-5.1.6.tar.bz2 : 소스설치
gnupg 1.3.1 : 'pecl install gnupg' 의 방법으로 설치
# /usr/local/apache2/bin/apachectl start
위의 환경에서는
$gpg->seterrormode(gnupg::ERROR_EXCEPTION); 일때, ERROR_EXCEPTION 이 발생하면, 정상적으로 작동하였다.
----------------------------------------------------------------------
이런저런 이유들로 인해, 가급적 yum 패키지로 apache2, php 등을 설치/운용 하고 싶은 나에겐 아직 불완전한 해결책이다.
[완료]
http://kldp.org/node/116345
http://kldp.org/node/116181
댓글 달기