2

Mac OS X (Intel x86) 用の Instant Client ダウンロードから、Instant client 10.2.0.4 basic および sdk zip ファイルをダウンロードしました。

以下のようなフォルダに解凍しました

-rw-r--r--@ 1 MNV_Kishore  1000     278 Apr  1  2009 BASIC_README
-r--r--r--@ 1 MNV_Kishore  1000 1609607 Feb  2  2008 classes12.jar
-rwxr-xr-x@ 1 MNV_Kishore  1000     34168 Apr  1  2009 genezi
lrwxr-xr-x  1 MNV_Kishore  wheel        20 Dec  2 18:10 libclntsh.dylib -> libclntsh.dylib.10.1

-rwxr-xr-x@ 1 MNV_Kishore  1000   25582048 Mar 31  2009 libclntsh.dylib.10.1
-rwxr-xr-x@ 1 MNV_Kishore  1000 2062528 Mar  3  2009 libnnz10.dylib
lrwxr-xr-x  1 MNV_Kishore  wheel        18 Dec  2 18:10 libocci.dylib -> libocci.dylib.10.1
-rwxr-xr-x@ 1 MNV_Kishore  1000 1277896 Mar  3  2009 libocci.dylib.10.1

-rwxr-xr-x@ 1 MNV_Kishore  1000   72626768 Apr  1  2009 libociei.dylib
-rwxr-xr-x@ 1 MNV_Kishore  1000     118672 Mar 25  2009 libocijdbc10.dylib
-rwxr-xr-x@ 1 MNV_Kishore  1000     118672 Mar 25  2009 libocijdbc10.jnilib
-r--r--r--@ 1 MNV_Kishore  1000 1555682 Feb  2  2008 ojdbc14.jar
drwxr-xr-x@ 7 MNV_Kishore  wheel    238 Apr  1  2009 sdk

すべてのヘッダー ファイル .h は、sdk の下のインクルード ディレクトリに存在します。

コマンドで設定しようとすると...

./configure --with-pdo-oci=instantclient,/usr/local/instantclient_10_2,10.2.0.4

...以下のエラーが発生しました

checking for oci.h... configure: error: I'm too dumb to figure out where the include dir is in your instant client install

誰でもこのエラーで私を助けてもらえますか?

4

4 に答える 4

5

最近、これを CentOS ボックスにインストールする必要があったため、パスが少し異なる可能性があります。また、コンパイル済みの PHP インスタンスを使用し、OCI8 関数を別のモジュールとして追加しました。CentoOS を使用する前に、次の手順を使用して Mac ワークステーションにインストールしました (少し古いので、これが現在のバージョンの OS X と PHP で引き続き機能するかどうかはわかりません): http://articles.serenity.de /コンパイル_php_with_oracle/

CentOS のインストールでは、次のことを行う必要がありました。

  • インスタント クライアント サポートなしで PHP 5.4 をインストール/コンパイルします。

  • instantClient の基本パッケージと SDK パッケージを入手してインストールします (すでに両方あるようです)。

  • OCI構成スクリプトがヘッダーを見つけるにはあまりにも馬鹿げていると主張するとき、それは皮肉ではないので、シンボリックリンクのネズミの巣を設定する必要があります。CentOS では、基本クライアントは /usr/lib/oracle/10.2.0.3/client64 にインストールされ、SDK ファイルは /usr/include/oracle/10.2.0.3/client64/ にインストールされます。

cd /usr/lib/oracle/10.2.0.3/client64
cp /usr/include/oracle/10.2.0.3/client64/* .
ln -s lib/libnnz10.so libnnz.so
ln -s lib/libclntsh.so.10.1 libclntsh.so
ln -s lib/libnnz10.so libnnz10.so
ln -s lib/libclntsh.so.10.1 libclntsh.so.10.1
  • これで、pecl から OCI8 をインストールできます。この時点で PDO_OCI は機能しないことに注意してください。これは OCI8 ドライバー専用です。

pecl install oci8

  • PDO_OCI をサポートするには、さらにいくつかのシンボリック リンクを追加する必要があります。
cd /usr/lib/oracle/10.2.0.3/client64
mkdir sdk
cd sdk && ln -s /usr/include/oracle/10.2.0.3/client64 include
ln -s /usr/lib/oracle/10.2.0.3/client64/sdk/include/ /usr/lib/oracle/10.2.0.3/client/include
ln -s /usr/lib/oracle/10.2.0.3/client64/ /usr/lib/oracle/10.2.0.3/client
ln -s /usr/include/oracle/10.2.0.3/client64/ /usr/include/oracle/10.2.0.3/client
  • PDO OCI は数年間メンテナンスされていないため、pecl から直接インストールすることはできません。代わりに、ダウンロードしていくつかの変更を加える必要があります。sed コマンドは、正常にコンパイルされるように function_entry を zend_function_entry に更新します。
pecl download pdo_oci
tar -xvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0
sed -i -e 's/function_entry pdo_oci_functions/zend_function_entry pdo_oci_functions/' pdo_oci.c
mkdir include
ln -s /usr/include/php include/php
phpize
cp /usr/include/oracle/10.2.0.3/client64/* ./include
./configure --with-pdo-oci=instantclient,/usr,10.2.0.3
make && make install

この時点で、PDO_OCI は PHP インストールで動作するはずです。それでも問題が解決しない場合は、configure を調べて scirpts を作成し、システムに必要なディレクトリとシンボリック リンクを確認できます。ブラッドは、これを理解するのに何日もかかったと言ったとき、文字通り話していました。うまくいけば、それはあなたがそれをより速く働かせるのを助けるでしょう.

于 2013-12-03T15:36:32.920 に答える
-2

たぶん、それは単なる autoconf の問題です。ソースから最後のものをコンパイルし、完全に動作します。正しい手順を説明するためだけに投稿を作成します。

于 2015-10-22T22:17:59.603 に答える