본문 바로가기
Linux/APM

[CentOS7] php-5.2.17 설치

by aegypius 2020. 4. 20.
728x90
반응형

  일전에 php-fpm을 이용하여 php-5.3.29와 php-7.4.4를 하나의 서버에 모두 설치하고 두 버전을 동시에 사용가능하게 설정했었다.  오래전에 만들어진 홈페이지를 호스팅하기 위해서 php 5.3을 설치했는데, 알고보니 이 프로그램은 php5.3도 아닌 php5.2로 만들어진 것이다. 7.x 버전이 사용되는 요즘에 5.2라니..우선 php5.2.17을 설치해 보기로 했다. 

  서버에 설치한 리눅스는 CentOS-7-x86_64-Minimal-1908.iso이다.

  컴파일 옵션은 아래와 같다.

./configure --prefix=/usr/local/php52 --with-config-file-path=/etc/php52 --with-config-file-scan-dir=/etc/php52/php.d --with-libdir=lib64 --with-mysql --with-mysqli --enable-fastcgi --enable-force-cgi-redirect --enable-mbstring --disable-debug --disable-rpath --with-bz2 --with-curl --with-gettext --with-iconv --with-openssl --with-gd --with-mcrypt --with-pcre-regex --with-zlib

  처음 컴파일 할 때 mcrypt.h not found. Please reinstall libmcrypt 오류가 발생했는데 libmcrypt-devel을 설치하면 해결된다. yum으로 libmcrypt-devel이 설치되지 않는다면, epel 저장소가 설치되어 있지 않는지 확인해야 한다.

  이제 컴파일 / 설치를 할 차례이다. 무슨 일인지 configure에서는 문제가 없지만 정작 컴파일에서는 오류가 발생한다. 

  해결책은 https://forums.centos.org/viewtopic.php?t=53046 에서 찾았다.

  1. yum install pathch로 patch를 먼저 설치하자. 
  2. yum install wget로 wget도 설치하자.
  3. php5.2patch파일을 다운받자. (wget https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt)
  4. 혹시 몰라서 패치파일의 내용을 아래에 텍스트로 저장해 놓았다. 파일명은 php-5.2.17.patch가 좋겠다.
  5. 이제 패치를 적용시켜보자. # patch -p0 < ./php-5.2.17.patch
  6. 지금까지의 작업내용은 아래와 같다.


php-5.2.17.patch의 내용

--- ext/dom/node.c	2012-08-06 17:49:48.826716692 +0800
+++ ext/dom/node.c	2012-08-06 17:52:47.633484660 +0800
@@ -1895,9 +1895,17 @@ static void dom_canonicalization(INTERNA
         RETVAL_FALSE;
     } else {
 		if (mode == 0) {
+#ifdef LIBXML2_NEW_BUFFER
+            ret = xmlOutputBufferGetSize(buf);
+#else
 			ret = buf->buffer->use;
+#endif
 			if (ret > 0) {
+#ifdef LIBXML2_NEW_BUFFER
+                RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1);
+#else
 				RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
+#endif
 			} else {
 				RETVAL_EMPTY_STRING();
 			}
--- ext/dom/documenttype.c	2012-08-06 18:02:16.019640870 +0800
+++ ext/dom/documenttype.c	2012-08-06 18:06:16.612228905 +0800
@@ -205,7 +205,13 @@ int dom_documenttype_internal_subset_rea
 		if (buff != NULL) {
 			xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
 			xmlOutputBufferFlush(buff);
+
+#ifdef LIBXML2_NEW_BUFFER
+			ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff),
+			             xmlOutputBufferGetSize(buff), 1);
+#else
 			ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
+#endif
 			(void)xmlOutputBufferClose(buff);
 			return SUCCESS;
 		}
--- ext/simplexml/simplexml.c	2012-08-06 18:10:44.621017026 +0800
+++ ext/simplexml/simplexml.c	2012-08-06 18:12:48.016270419 +0800
@@ -1417,7 +1417,12 @@ SXE_METHOD(asXML)
 
 			xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->ptr)->encoding);
 			xmlOutputBufferFlush(outbuf);
+#ifdef LIBXML2_NEW_BUFFER
+			RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf),
+			               xmlOutputBufferGetSize(outbuf), 1);
+#else
 			RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use, 1);
+#endif
 			xmlOutputBufferClose(outbuf);
 		}
 	} else {

  다시 컴파일 시도중에 오류발생 /usr/bin/ld: cannot find -lltdl 이건 libtool-ltdl-devel을 설치해야 한다. 설치 후 가상서버를 종료한 후에 core를 1에서 4개로, RAM을 1GB에서 4GB로 올려보았다. 컴파일 소요시간이 생각보다 길어서 (VPS의 1-core, 1GB-RAM 보다는 조금 빨랐다) 살짝 올려본 것이다. 컴파일은 성공적으로 끝났으며 컴파일 속도는 따로 측정하지는 않았지만 체감상 4배이상은 되는 듯 하다. 

  php 5.2.17이 설치는 성공했지만 웹서버와의 연동이 안되는 문제를 아직 해결하지 못했다. php 5.2.17은 아득한 옛날(2011년도 1월)에 나왔다. CentOS 5.5가 2010년 5월에 나왔으니 대략 이 버전들이 서로 궁합이 잘 맞으려나?

  여하튼 apache 웹서버에서 php를 실행시키기 위해서는 일전에 사용해봤던 php-fpm외에도 fcgid, fastcgi, proxy_fcgi와 php-fpm 함께사용하는 방법이 있다. (참조 : https://cwiki.apache.org/confluence/display/httpd/php) 가장 뛰어난 방법이라는 proxy_fcgi는 httpd 2.4 이상의 버전에서만 사용 가능하다고 나온다. fastcgi와 fcgid 모두 실패했다. apache의 버전을 2.2로 낮춰서 다시 테스트 해 봐야겠다...

728x90
반응형

댓글