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


おわりに


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

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

Source: https://habr.com/ru/post/J116474/


All Articles