PHP 5.6 OCI8 설치 문제:

PHP 5.6 OCI8 설치 문제:

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을 소스로 지정해야 했습니다. 이게 도움이 되길 바란다

관련 정보