PHP5用のOCI8およびPDO_OCI拡張機能のインストール

現在、私はPHPのプロジェクトでOracle DBMSを使用するのが大好きな会社で働いています。バージョン11gの場合もあります。



この会社の開発者のほとんどはWindowsを実行しています。 過去1か月にわたって、彼らの何人かはLinuxに参加することに決め、Ubuntuをインストールしました。 OS自体をインストールしてから数日後、Oracle DBMSを操作するためのPHPドライバー-Oracleインスタントクライアント11.2に基づいたOCI8およびPDO_OCIをインストールするという課題に直面しました。



Linuxの初心者が自分ですべての操作を実行できるという、詳細で完全に機能するロシア語のマニュアルは見つかりませんでした。 その結果、私は彼らのマシンで何度も一連の同じアクションを実行し、マニュアルを作成する必要がありました。



このマニュアルは、Ubuntu Linuxのユーザー向けに書かれていますが、いくつかの変更が加えられているため、ほとんどのLinuxシステムのユーザーに適しています。





インストールの準備



  1. 管理者の下でコマンドを実行できるはずです。
  2. 次のパッケージ(リスト付きのインストールコマンド)でphp5をインストールする必要があります。

    sudo apt-get install php5 php5-dev php-pear php5-cli

    sudo pecl install pdo




  3. libaio1ライブラリがインストールされている必要があります。

    sudo apt-get install libaio1





Oracleインスタントクライアントをインストールする



プロセッサアーキテクチャとOSについては、公式サイトhttp://oracle.comからインスタントクライアントOracleをダウンロードします。

Linuxの場合、インスタントクライアントには2つのフレーバーがあります。



2つのファイルをダウンロードする必要があります。



以下もダウンロードできます。



Oracleインスタントクライアントファイルが配置されるディレクトリを作成します(追加のソフトウェアパッケージ用に予約されている/ optディレクトリがこれに適しています)。

sudo mkdir -p /opt/oracle/







ダウンロードしたファイルを/ opt / oracleに移動し、宛先フォルダーに移動します(ユーザーの「ダウンロード」フォルダーにある「zipアーカイブ」をダウンロードしたとしましょう)。

sudo mv ~/downloads/instantclient-*.zip /opt/oracle/

cd /opt/oracle/








ダウンロードしたすべてのアーカイブを解凍します。

sudo unzip instantclient-basic-*-*.zip

sudo unzip instantclient-sdk-*-*.zip






SQL * Plusをダウンロードした場合:

sudo unzip instantclient-sqlplus-*-*.zip







その結果、ディレクトリ/ opt / oracleが作成されました。Oracleインスタントクライアント11.2.0.2.0の場合、ディレクトリinstantclient_11_2が作成されました。 このディレクトリの名前をinstantclientに変更し(異なるバージョン/ディレクトリがある場合は、コマンドを変更します)、そこに移動します。

sudo mv instantclient_11_2 instantclient

cd instantclient








次に、クライアントが適切に動作するために、いくつかの追加のディレクトリとシンボリックリンクを作成する必要があります(バージョンに注意し、別のコマンドがある場合はコマンドを変更します)。

sudo ln -s /opt/oracle/instantclient/libclntsh.so.* /opt/oracle/instantclient/libclntsh.so

sudo ln -s /opt/oracle/instantclient/libocci.so.* /opt/oracle/instantclient/libocci.so

sudo ln -s /opt/oracle/instantclient/ /opt/oracle/instantclient/lib



sudo mkdir -p include/oracle/11.2/

cd include/oracle/11.2/

sudo ln -s ../../../sdk/include client

cd -



sudo mkdir -p lib/oracle/11.2/client

cd lib/oracle/11.2/client

sudo ln -s ../../../ lib

cd -








Oracleインスタントクライアントライブラリを検索するためのディレクトリが示される構成ファイルを作成し、接続します。

echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf

sudo ldconfig








Ubuntuには/ usr / include / phpディレクトリがなく、クライアントはまだそれを探しているため、同等のphp5へのシンボリックリンクを作成します。

sudo ln -s /usr/include/php5 /usr/include/php







OCI8をインストールする



すべての操作の後、 peclコマンドを使用してoci8拡張機能を著しくインストールします。

sudo pecl install oci8





Oracleインスタントクライアントへのパスを入力するよう求められます。これには回答する必要があります。

instantclient,/opt/oracle/instantclient







拡張接続ファイルを作成します。

echo "; configuration for php oci8 module" | sudo tee /etc/php5/conf.d/oci8.ini

echo extension=oci8.so | sudo tee -a /etc/php5/conf.d/oci8.ini








PDO_OCIを設定する



PDO_OCIを設定するには、まずpearリポジトリからダウンロードする必要があります

Pearパッケージのリストを更新します。

sudo pecl channel-update pear.php.net







アーカイブをダウンロードして一時ディレクトリに配置します。

sudo mkdir -p /tmp/pear/download/

cd /tmp/pear/download/

sudo pecl download pdo_oci








アーカイブの内容を抽出し、それに進みます。

sudo tar xvf PDO_OCI*.tgz

cd PDO_OCI*








ここでは、config.m4ファイルを調整する必要があります。これには、Oracleインスタントクライアントのバージョンに関するデータが含まれていないため、最新の変更の日付は2005です。 お気に入りのエディターを起動し、「+」とマークされた変更を行います(バージョンに注意を払い、別のバージョンがある場合は行を変更します)。

sudo vim config.m4







以下は、2つのファイルの差分です。

***************

*** 7,12 ****

--- 7,14 ----

if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then

PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`

test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3

+ elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then

+ PDO_OCI_VERSION=11.2

elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then

PDO_OCI_VERSION=10.1

elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then

***************

*** 119,124 ****

--- 121,129 ----

10.2)

PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)

;;

+ 11.2)

+ PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)

+ ;;

*)

AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION)

;;

***************







phpizeコマンドを使用して、 PHP拡張機能の環境を準備します(バージョンを変更する場合は、バージョンに注意してください)。

sudo phpize







パッケージインストーラを構成し、パッケージをインストールします(別のバージョンがある場合は、バージョンに注意してください)。

sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2

sudo make

sudo make install









接続ファイルを作成します。

echo "; configuration for php PDO_OCI module" | sudo tee /etc/php5/conf.d/pdo_oci.ini

echo extension=pdo_oci.so | sudo tee -a /etc/php5/conf.d/pdo_oci.ini








まとめると



Apacheを再起動し、インストールされている拡張機能を確認します。

sudo /etc/init.d/apache2 restart

php -m








おわりに



マニュアルはこの記事に基づいており、少し修正されています-バグが修正され、追加されました。



この記事が職場の同僚だけでなく役に立つことを願っています。



All Articles