PHP 5.6 Instalacja OCI8 Problem:

1

Próbuję zainstalować rozszerzenie OCI8 na Red Hat 7 (PHP 5.6.x.) Spędziłem co najmniej dwa dni próbując to rozgryźć, w tym czesanie SuperUser i StackOverflow. Jak dotąd żadna z odpowiedzi nie rozwiązała problemu.

Mam zainstalowanego klienta Oracle Instant:

/usr/lib/oracle/12.1/client64/lib/

Po uruchomieniu następującego polecenia:

pecl install oci8-2.0.10 --with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/

Prosi mnie o podanie ścieżki do ORACLE_HOME. Potwierdziłem, że jest to już zdefiniowane, więc naciśnij Enter, aby kontynuować. Kiedy to zrobię, uruchamia się przez komendy make i błędy w tym:

/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

Rozumiem, że nie można znaleźć pliku oci.h. Tak więc sądzę, że jeśli podam mu lokalizację klienta Oracle Instant, minie ten błąd. Tak więc przy poprzednim poleceniu, w którym żąda zmiennej środowiskowej ORACLE_HOME, podaję jej następujące informacje:

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

Nie jestem w stanie zrozumieć, dlaczego zawodzi. Słyszałem, że SDK musi zostać zainstalowany, ale zgodnie z moją najlepszą wiedzą, kiedy zainstalowałem klienta natychmiastowego, zainstalowałem również SDK.

Każda pomoc byłaby mile widziana. Dzięki!

stack-flo
źródło

Odpowiedzi:

5

Miałem dokładnie ten sam problem, z jedną różnicą, w moim przypadku php54. Myślę / mam nadzieję, że moje rozwiązanie również dla ciebie działa:

echo "instantclient,/usr/lib/oracle/12.1/client64/lib"|pecl install oci8-2.0.10

zainstalowałem sterownik oci bez żadnych problemów. W moim przypadku, ponieważ domyślną wersją php była 5.3, korzystałem z pakietów dostarczonych z rh dla 5.4 i musiałem pobrać / opt / rh / php54 / enable przed uruchomieniem pecl dla instalacji oci. mam nadzieję, że to pomoże

ik_zelf
źródło