
私は Red Hat 7 (PHP 5.6.x) に OCI8 拡張機能をインストールしようとしています。SuperUser と StackOverflow を組み合わせながら、この問題を解決しようと少なくとも 2 日間費やしました。これまでのところ、どの回答でも問題は解決していません。
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 で、違いは 1 つでした。私の解決策があなたにも有効であると信じています。
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 をソースする必要がありました。これがお役に立てば幸いです。