
Red Hat 7(PHP 5.6.x.)에 OCI8 확장을 설치하려고 합니다. SuperUser와 StackOverflow를 조합하는 것을 포함하여 이 문제를 해결하는 데 최소 이틀이 걸렸습니다. 지금까지 어떤 답변도 문제를 해결하지 못했습니다.
Oracle Instant Client가 다음 위치에 설치되어 있습니다.
/usr/lib/oracle/12.1/client64/lib/
다음 명령을 실행할 때 :
pecl install oci8-2.0.10 --with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/
ORACLE_HOME에 대한 경로를 제공하라는 메시지가 표시됩니다. 이것이 이미 정의되어 있음을 확인했으므로 계속하려면 Enter 키를 누릅니다. 일단 그렇게 하면 make 명령이 실행되고 다음과 같은 오류가 발생합니다.
/bin/sh /var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/libtool --mode=compile cc -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/include -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/home/oracle/oracle/product/rdbms/public -I/home/oracle/oracle/product/rdbms/demo -DHAVE_CONFIG_H -g -O2 -c /var/tmp/oci8/oci8.c -o oci8.lo
libtool: compile: cc -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/include -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/home/oracle/oracle/product/rdbms/public -I/home/oracle/oracle/product/rdbms/demo -DHAVE_CONFIG_H -g -O2 -c /var/tmp/oci8/oci8.c -fPIC -DPIC -o .libs/oci8.o
In file included from /var/tmp/oci8/oci8.c:48:0:
/var/tmp/oci8/php_oci8_int.h:60:17: fatal error: oci.h: No such file or directory
#include <oci.h>
^
compilation terminated.
make: *** [oci8.lo] Error 1
ERROR: `make' failed
oci.h 파일을 찾을 수 없다는 것을 알고 있습니다. 따라서 Oracle Instant Client의 위치를 제공하면 해당 오류가 발생하지 않을 것이라고 생각합니다. 따라서 ORACLE_HOME 환경 변수를 요청하는 이전 명령에서 다음을 제공합니다.
checking Oracle ORACLE_HOME install directory... /usr/lib/oracle/12.1/client64/lib/
checking ORACLE_HOME library validity... configure: error: Expected an ORACLE_HOME top level directory but /usr/lib/oracle/12.1/client64/lib/ appears to be an Instant Client directory. Try --with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/
ERROR: `/var/tmp/oci8/configure --with-oci8=/usr/lib/oracle/12.1/client64/lib/' failed
왜 실패하는지 알 수 없습니다. SDK를 설치해야 한다고 들었는데 제가 아는 한, 인스턴트 클라이언트를 설치할 때 SDK도 함께 설치했습니다.
어떤 도움이라도 주시면 감사하겠습니다. 감사해요!
답변1
내 경우에는 php54에서 하나의 차이점으로 정확히 동일한 문제가 발생했습니다. 내 솔루션이 귀하에게도 효과가 있다고 생각합니다/희망합니다:
echo "instantclient,/usr/lib/oracle/12.1/client64/lib"|pecl install oci8-2.0.10
문제없이 oci 드라이버를 설치했습니다. 제 경우에는 기본 PHP 버전이 5.3이었기 때문에 5.4용 rh 제공 패키지를 사용했고 oci 설치를 위해 pecl을 시작하기 전에 /opt/rh/php54/enable을 소스로 지정해야 했습니다. 이게 도움이 되길 바란다