출처 : http://blog.netchk.net/?p=1204


CentOS 6.x 버전에서 php.4.4 컴파일 과정 중 make 시 오류

Centos 6.6 32bit
php 4.4.9
openssl-1.0.1e-30.el6_6.4.i686
openssl-devel-1.0.1e-30.el6_6.4.i686

 

php 설치 중 make 작업시 에러발생
make: *** [ext/openssl/openssl.lo] Error 1

 

여기 참고 해서 openssl.c 를 교체

 

wget http://www.softel.co.jp/blogs/tech/wordpress/wp-content/uploads/2012/10/openssl.c
cp openssl.c ext/openssl/openssl.c

또는 첨부파일   openssl.c 



* Test Environment

 

CentOS 5.x 32bit

 

Red : 강조

Blue : 명령어 & 메뉴이동

Green : 주석

Pink : 변수

Purple : 예시

Orange : 출력&편집&소스

 

* Incident

 

svn 설치과정 중 apxs 파일관련 오류가 발생하여 해당 파일을 실행하였더니 아래와 같이 오류가 발생하였다.

[root@mooon]# /usr/local/apache_svn/bin/apxs -h

/usr/local/apache_svn/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory 

 

 

 

* Resolution

위 오류가 발생한 이유는 시스템상에 perl 이 없는 상태에서 소스설치를 진행하여 apxs 파일이 perl을 찾지 못해 발생하는 오류이다.

perl을 설치하고 apxs 파일을 수정하면 해결 된다.

[root@mooon]# yum install perl

[root@mooon]# vi /usr/local/apache_svn/bin/apxs

#!/replace/with/path/to/perl/interpreter -w // 삭제 

#!/usr/bin/perl -w // 추가 

 

 

 * Reference 

 

http://wnstjqdl.tistory.com/23 



서버를 이전 또는 동일한 옵션의 APM 을 다른 서버에 설치하게 될 경우 기존 APM 옵션을 알아야 하는데

따로 적어두지 않았을 경우에는 곤란함이 있다.


[14.48.175.179 서버 기준]


1.apache 소스 컴파일 옵션 확인

cat /usr/local/apache/build/config.nice

#! /bin/sh
#
# Created by configure

"./configure" \
"--prefix=/usr/local/httpd-2.2.27" \
"--sysconfdir=/etc/httpd/conf" \
"--enable-modules=most" \
"--enable-mods-shared=most" \
"--enable-ssl" \
"--enable-rewrite" \
"--enable-so" \
"$@"


2. php 소스 컴파일 옵션 확인

/usr/local/php/bin/php-config | grep configure

 --configure-options [--prefix=/usr/local/php-5.3.28 --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/etc/httpd/conf --with-iconv --with-mcrypt=/usr --with-ncurses=/usr --with-gdbm=/usr --with-zlib=/usr --with-openssl --with-kerberos=/usr --with-imap-ssl=/usr --with-gd=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --with-pic --with-curl --with-dbm --disable-libtool-lock --disable-short-tags --disable-debug --disable-ipv6 --enable-inline-optimization --enable-zend-multibyte --enable-fast-install --enable-safe-mode --enable-magic-quotes --enable-calendar --enable-ftp --enable-sockets --enable-gd-native-ttf --enable-gd-jis-conv --enable-dba=shared --enable-exif --enable-zip --enable-mbstring --enable-dbase --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-bcmath --enable-shmop --enable-xml --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libdir=lib64]

3. mysql 소스 컴파일 옵션 확인

grep -i configure_line /usr/local/mysql/bin/mysqlbug

CONFIGURE_LINE="./configure  '--prefix=/usr/local/mysql-5.0.96' '--with-mysqld-user=mysql' '--localstatedir=/mysql/data' '--with-charset=utf8' '--with-extra-charsets=all' '--with-pthreads' '--enable-thread-safe-client' '--enable-named-pipe' '--enable-shared' '--with-openssl' '--with-big-tables' '--with-readline' '--without-debug' '--without-docs' '--without-bench'"
`test -n "$CONFIGURE_LINE"  && echo "Configure command: $CONFIGURE_LINE"`


[출처] http://jelbin.tistory.com/63


httpd-2.4.3 버전과  php-5.2.14 버전을 설치하였다.

php 5.2 설치 후에 apache를 start 하게 되면 다음과 같은 메시지가 나오면서 apache가 정상적으로 작동을 하지 않았다.

httpd: Syntax error on line 146 of /usr/local/apache/conf/httpd.conf: Cannot load modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: unixd_config

아파치의 버전업으로 인해서 해당 심볼의 명칭이 바뀌었다. unixd_config -> ap_unixd_config로 변경

src/php-5.2.14/sapi/apache2handler/php_functions.c

안에서 unixd_config -> ap_unixd_config 로 변경하면 된다. 총 2군데 4번 변경하면 된다.

그리고 나서 다시 컴파일을 하게 되면 문제 없이 실행이 된다.

[출처] http://sclow.tistory.com/entry/apache-24-php-52-설치시-libphp5so-undefined-symbol-unixdconfig-오류

 ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --with-charset=euckr --with-extra-charsets=complex --with-mysqld-user=mysql --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
make
make install

[컴파일 옵션 설명]

--prefix=/usr/local/mysql : 컴파일후 관련된 파일들이 설치되는 디렉토리,기본값 : /usr/local 

 --exec-prefix = EPREFIX : 기본값은  --prefix에서 지정한 값과 동일.

 --bin-dir = DIR : 클라이언트 실핼파일과 스크립들이 저장되는 디렉토리, 기본값은 PREFIX/bin

 --libexec=DIR : mysql 데몬, 기본값은 PREFIX/libexec

 --localstatedir=/usr/local/mysql/data : 사용자의 데이터와 로그파일를 저장할 디렉토리 지정, 기본값은 PREFIX/var

 --with-charset=utf8 : utf8로 charset 지정. utf-8로 하면 에러.

 --with-extra-charsets=all : 추가 charset 지정, none,complex,all 또는 charset 리스트

 --with-unix-socket-path=/tmp/mysql.sock : 소켓디렉토리 , 기본값은 /tmp 또는 /var/run

 --with-tcp-port=3306 : 포트 지정. 기본값은 3306

 --with-mysqld-user=mysql : 데몬실행 계정 지정

 --with-debug : debug code추가 , 사용안하는 경우 without 옵션으로

 --without-readline : 콘솔에서 한글 입력가능

 --enable-thread-safe-client : 쓰레드 지원

 --without-server : 서버 기능 없이 클라이언트로만 사용하고자 할 때 즉 클라이언트로만 사용할 때

 --enable-assembler : 어셈블러  함수 지원

 --with-client-ldflags=-all-static : 클라이언트 실행 파일 생성시 라이브러리를 포함하도록 지정, 정적으로 컴파일

 --with-mysqld-ldflags=-all-static : 데몬실행파일 생성시 라이브러리를 포함하도록 지정,정적으로 컴파일

 --sysconfdir=/etc : 설정파일 디렉토리지정

 --with-mit-threads : 강제로 MIT-pthreads 를 실행하고자 할때