現在、私はPHPのプロジェクトでOracle DBMSを使用するのが大好きな会社で働いています。バージョン11gの場合もあります。
この会社の開発者のほとんどはWindowsを実行しています。 過去1か月にわたって、彼らの何人かはLinuxに参加することに決め、Ubuntuをインストールしました。 OS自体をインストールしてから数日後、Oracle DBMSを操作するためのPHPドライバー-Oracleインスタントクライアント11.2に基づいたOCI8およびPDO_OCIをインストールするという課題に直面しました。
Linuxの初心者が自分ですべての操作を実行できるという、詳細で完全に機能するロシア語のマニュアルは見つかりませんでした。 その結果、私は彼らのマシンで何度も一連の同じアクションを実行し、マニュアルを作成する必要がありました。
このマニュアルは、Ubuntu Linuxのユーザー向けに書かれていますが、いくつかの変更が加えられているため、ほとんどのLinuxシステムのユーザーに適しています。
インストールの準備
- 管理者の下でコマンドを実行できるはずです。
- 次のパッケージ(リスト付きのインストールコマンド)でphp5をインストールする必要があります。
sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo
- libaio1ライブラリがインストールされている必要があります。
sudo apt-get install libaio1
Oracleインスタントクライアントをインストールする
プロセッサアーキテクチャとOSについては、公式サイト
http://oracle.comからインスタントクライアントOracleをダウンロードします。
Linuxの場合、インスタントクライアントには2つのフレーバーがあります。
- RPMパッケージ-Linux、CentOS、Fedora、Red Hat Enterprise Linux、Mandriva Linux、SUSE Linuxなど。 RPMサポートを持っている人
- ZIPアーカイブ-他の皆に。
2つのファイルをダウンロードする必要があります。
- instantclient-basic-Oracleインスタントクライアント自体
- instantclient-sdk-Oracleインスタントクライアント用のアプリケーションを開発するためのライブラリセット
以下もダウンロードできます。
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
おわりに
マニュアルはこの
記事に基づいており、少し修正されています-バグが修正され、追加されました。
この記事が職場の同僚だけでなく役に立つことを願っています。