[완료] (CentOS5.5) x86_64 에서 pecl로 설치되는 php용 확장모듈의 문제점/의문입니다..

pogusm의 이미지

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()로 해보아도 "예쁘고 보기좋게(다양한 색깔로)" 출력되지 않더군요...
무엇이 문제일까요??

조언 부탁드립니다

File attachments: 
첨부파일 크기
Image icon xdebug_var_dump.gif44.9 KB
pogusm의 이미지

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 <--- 이게 문제였습니다

========================================================================================
 Package               Arch           Version                        Repository    Size
========================================================================================
Updating:
 mysql                 x86_64         5.1.48-1.el5.remi.1            remi         1.1 M
 php                   x86_64         5.3.2-2.el5.remi               remi         1.3 M
 php-cli               x86_64         5.3.2-2.el5.remi               remi         2.5 M
 php-common            x86_64         5.3.2-2.el5.remi               remi         951 k
 php-ldap              x86_64         5.3.2-2.el5.remi               remi          54 k
 remi-release          noarch         5-8.el5.remi                   remi         4.9 k
Installing for dependencies:
 libedit               x86_64         2.11-2.20080712cvs.el5         epel          80 k
 mysql-libs            x86_64         5.1.48-1.el5.remi.1            remi         1.7 M
 mysqlclient15         x86_64         5.0.67-1.el5.remi              remi         1.3 M
 
Transaction Summary
========================================================================================
Install       3 Package(s)
Upgrade       6 Package(s)

pogusm의 이미지

이는 확실히 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 등을 설치/운용 하고 싶은 나에겐 아직 불완전한 해결책이다.

pogusm의 이미지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.