그동안의 시도 방법들...
php/ext/openssl 에서 phpize로 설치도해보고
php.ini에서 extension_dir 에 /ext 추가도해보고
extension = openssl.so 추가도 해봤지만 다 에러나고 enable로 바뀌지도 않았다.
다른 서버에 셋팅해둔거 보니까 위의 작업을 하지않았는데도 enable로 되어있고, phpinfo()를 확인했을 때 소켓에 ssl이 들어있었다.
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
현재 셋팅 중인 서버에는 소켓에 ssl가 들어있지 않았다.
확인해보니 php5.3부터는 ssl을 별도로 설정해줄 필요가 없다는 것 같은데 왜이렇게 안되지는지 답답했다.
apm 환경을 구성 중이고 관련 라이브러리를 모두 설치한 상태이다.
apache 설치-mysql 설치 순으로 진행하였다. (둘 다 모두 구동 잘되는 것 확인하였음)
그런데 php설치에서 한참 막혀버린.. (소켓 연동 문제)
기존에 php 설치할 때는 ./Configure 에서 옵션만 잘 지정해주고, php.ini에서 파일 구성을 수정(사용할 기능을 주석 해제하거나, 경로를 지정하는 등의 작업)하면 금방 됐었는데 아무리 해도 잘 안됐다..
셋팅 중인 서버가 처음부터 새로 설치하는게 아니라, 기존에 누군가 설치해둔 서버를 사용하려고 보니 설정안되어있는게 있어서 수정 중이였다.
인코딩도 깨져서 보였고 (euc-kr에서 utf8로 변경)
httpd도 httpd.conf파일을 수정해야했고
mysql도 제대로 설치가 안되어있어서 재설치 했다.(mariaDB가 설치되어있었다.)
재설치 후 php연동에 성공했는데..기존 소스를 실행해보니..!
ssl에서 문제가 발생했다..phpinfo()로 확인해보니 소켓에도 안떠있고, disable인 상태 ㅠ
make distclean make uninstall ./Configure를 몇번이나했는지 모르겠다 ㅎㅎ (옵션, 경로도 계속 바꿔줌)
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/apache/conf \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-curl \
--disable-debug \
--enable-safe-mode \
--enable-sockets \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-magic-quotes \
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-bcmath \
--with-zlib \
--with-gd \
--with-gettext \
--with-jpeg-dir=/usr \
--with-png-dir=/usr/lib \
--with-freetype-dir=/usr \
--with-libxml-dir=/usr \
--enable-exif \
--enable-sigchild \
--enable-mbstring \
--with-openssl \
--without-iconv
서치해봐도 다시 해보거나 재설치하라는 글.. 다른 해결방안을 봐도 나에겐 적용이 되지않았다 ㅠㅠ..아무래도 기존에 설치된 파일과 충돌이 있는 것 같았다. (기존에 php5.4버전이 설치되어있어서 5.3으로 다운그레이드함)
결국 삭제하고 재설치시도 했는데, 처음에는 설치파일을 따로 폴더를 지정해서 다운받았다가, 마지막에는 기본 경로로 재설치 했다.
cd /usr/local/src
wget http://kr1.php.net/get/php-5.3.29.tar.gz/from/this/mirror
tar -zxvf php-5.3.29.tar.gz
cd php-5.3.29
configure는 잘되는데 make에서 계속 에러가 발생했다
ext/iconv/.libs/iconv.o: In function `_php_iconv_mime_encode':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1032: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1046: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1217: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1248: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1304: undefined reference to `libiconv_close'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1307: undefined reference to `libiconv_close'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1165: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1117: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1149: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1291: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o: In function `_php_iconv_mime_decode':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1342: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1838: undefined reference to `libiconv_close'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1841: undefined reference to `libiconv_close'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1453: undefined reference to `libiconv_close'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:1456: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:2499: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_append_bucket':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:2624: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:2545: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:2623: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o: In function `php_iconv_string':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:430: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:442: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:456: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:467: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o: In function `_php_iconv_strpos':
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:840: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:868: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/iconv/iconv.c:982: undefined reference to `libiconv_close'
ext/gd/libgd/.libs/gdkanji.o: In function `do_convert':
/usr/local/src/php-5.3.29/ext/gd/libgd/gdkanji.c:350: undefined reference to `libiconv_open'
/usr/local/src/php-5.3.29/ext/gd/libgd/gdkanji.c:365: undefined reference to `libiconv'
/usr/local/src/php-5.3.29/ext/gd/libgd/gdkanji.c:381: undefined reference to `libiconv_close'
collect2: error: ld returned 1 exit status
그래서 iconv 설치 경로 쭉 다시 확인하고, iconv경로에 들어가서 ldconfig 하고 다시 php경로로 돌아와서 make distclean한 다음 재설치했다.
안될경우 심볼릭 링크 생성하기
ldconfig란
ldconfig는 공유 라이브러리 캐시를 다시 설정하는 것이다.
공통적인 라이브러리를 사용하는 것을 동적 라이브러리라고 하는데, 바이너리를 실행할 때 shared object 등의 동적 라이브러리를 연결해 주는 링커 설정 명령어이다. 리눅스에서 .so 파일을 제대로 인식하지 못할 때 공유 라이브러리 캐시를 재설정해야한다.
/etc/ld.so.conf.d 경로에 conf 파일을 추가하거나 LD_LIBARARY_PATH를 변경하게 되면 ldconfig 명령을 통해 라이브러리를 재설정해야한다.
이런..캐시설정을 다시 안해서 발생한 문제
재설치 후 php -v안될 때
php 경로 확인 후 심볼릭 링크 생성했다..ㅎㅎ
# php -v
-bash: /usr/local/bin/php: 그런 파일이나 디렉터리가 없습니다
# whereis php
# ln -s /usr/local/php/bin/php /usr/local/bin
설치 후 phpinfo()를 열어보니 socket은 올라왔는데 경로 에러가 뜨길래 확인해보니, 기존에 php.ini에 ssl연동한다고 설정해두었던 것 때문에 발생한 에러였다. 원래대로 주석 처리 및 삭제했더니 정상적으로 실행됐다.
# php -v
PHP Warning: PHP Startup: Unable to load dynamic library '“/usr/local/php/modules”/openssl.so' - “/usr/local/php/modules”/openssl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.29 (cli) (built: Jan 19 2023 15:01:34)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
php -m으로 모듈 확인하기
[root@localhost src]# php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
json
libxml
mbstring
mysql
mysqli
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
SQLite
sqlite3
standard
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
zlib
후후..success
발생 원인 분석
php 중복 설치
기존에 5.4가 설치되어있는데, 다운그레이드한다고 5.3으로 설치하면서 php 버전이 두개 깔려있어서 발생한 문제
=>기존 버전을 완벽히 제거하고 설치
여러 버전을 깔아두고 바꿔 사용하는 분들도 계시던데 더 찾아봐야겠다
configure 시에 경로 지정
설치 시에 configure에서 경로를 확인 후 수정
공유 라이브러리 캐시 재설정
그동안 캐시를 재설정하지 않았다.. 그래서 모듈파일(*.so)이 제대로 인식 안되었던 것 같다. (openssl.so 관련 오류 발생)
하..
정신ㄴ나갈뻔했지만..까먹기전에 정리해야해서 후다닥 포스팅을 작성한다.
월요일부터 오늘까지 정말..여러방면으로 삽질했다 삽질마스터
mariaDB 로 인식되서 관련 파일 전체 삭제 후 mysql 재설치, php-mysql 연동, php5.3<=>php.5.4버전 차이로 인해 5.4 삭제 후 5.3으로 다운그레이드, openssl 버전 업그레이드, php openssl 활성화(제일오래걸림)
'Development > PHP' 카테고리의 다른 글
[PHP] 텍스트 깨지는 경우(인코딩) (0) | 2023.03.10 |
---|---|
[PHP] iconv 사용 시 텍스트가 잘릴 때 (0) | 2023.01.26 |
PHP Notice: Use of undefined constant (0) | 2023.01.18 |
Cannot re-assign auto-global variable _GET 에러 (0) | 2023.01.17 |
mysql_connect(): No such file or directory (0) | 2023.01.16 |