web-dev-qa-db-ja.com

PHP 5.6 OCI8インストールの問題:

Red Hat 7(PHP 5.6.x)にOCI8拡張機能をインストールしようとしています。SuperUserとStackOverflowの組み合わせを含め、これを理解するために少なくとも2日を費やしました。これまでのところ、どの答えも問題を解決していません。

Oracle InstantClientを次の場所にインストールしています。

/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
stack-flo

私の場合はphp54で、1つの差分でまったく同じ問題が発生しました。私のソリューションがあなたにも役立つと思います/願っています:

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

問題なくociドライバーをインストールしました。私の場合、デフォルトのphpバージョンは5.3だったので、rhが提供する5.4のパッケージを使用し、ociインストールのpeclを開始する前に/ opt/rh/php54/enableをソースする必要がありました。これがお役に立てば幸いです

5
ik_zelf