UbuntuマシンにPDO_OCIをインストールする必要があります。apt-getでインストールできるデフォルトのパッケージはありません。
それを行う方法を示すチュートリアルはたくさんありますが、それらに従うと、コンパイルに関連する問題が発生します(configure、make、...)
ここで私がしたこと:
私は このチュートリアル に従ってインスタントクライアントをインストールしました
Oci8をインストールします
pecl install oci8
エラーが発生します:
エラー:oci.hが見つかりません
PDO_OCIをインストールします
mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
pecl download pdo_oci
phpize
./configure –with-pdo-oci=instantclient,/usr,11.2
エラー:
pdo_driver.hが見つかりません.。
UBUNTU 12.04で完璧に機能する本格的なチュートリアルはありますか?
pecl install
のPDO、PDO_OCI拡張機能は廃止されました。これは、最新のPHPバージョンにはコアが組み込まれており、これらの拡張機能のインストールがほとんど失敗したためです。
私は運が悪かったいくつかのアプローチに従ってこれをやろうと多くの時間を費やしました、そして最終的にこれを行うためのクリーンな方法を自分で見つけました:から拡張機能をコンパイルしてインストールします= PHP source。
コンパイル中に、いくつかのトリックもあります。私は自分の投稿でプロセスを詳細に説明しました: https://medium.com/@thucnc/how-to-install-php5-pdo-oci- oci8-and-other-extensions-for-ubuntu-f405eadfe784
短い手順は次のとおりです。
Oracle_HOME
環境変数をエクスポートしますPDO_OCI(および必要に応じてOCI8)フォームPHPソースパッケージをダウンロードしてコンパイルします。ここで適用する必要のあるトリックがいくつかあります。
Sudo ln -s /usr/include/php5/ /usr/include/php
makefileを編集します。
EXTRA_INCLUDES = -I/usr/include/Oracle/11.2/client64
拡張機能を有効にして、Webサーバーを再起動します
これはDebian7.6でもテストされています
お役に立てれば。
PECLバージョンは廃止されたため、このガイドはソースからpdo_ociモジュールをコンパイルするのに役立つ場合があります。 CentOS 6.6、PHP v5.3.3、およびOracle Instant client v.12.1用に 元の投稿 と書きましたが、あなたのケースにも簡単に適用できるはずです。
$ apt-get install php-devel
$ cd /usr/local/src
$ mkdir php_source
$ cd php_source/
$ wget http://museum.php.net/php5/php-5.3.3.tar.gz
$ gunzip php-5.3.3.tar.gz
$ tar xvf php-5.3.3.tar
$ Oracle_HOME環境変数が設定されていることを確認してください。私の場合、それは/usr/lib/Oracle/12.1/client64を指していた
拡張ソースファイルが配置されているフォルダーを参照します。
$ cd php-5.3.3/ext/pdo_oci
拡張機能ですぐにサポートされていないOracleクライアントバージョン12.1を実行しているため、ハッキングを行う必要があります。 Instant Clientのバージョン番号をconfig.m4ファイルに追加する必要があります。そうしないと、configureが失敗し、次のエラーメッセージが表示されます。
Oracleバージョン... configure:エラー:Oracleに必要なOCI8ライブラリが/usr/lib/Oracle/12.1/client64 の下に見つかりません。
config.m4ファイルを開き、SUPPORTED_LIB_VERS
(5行目程度)を探し、バージョンのリストに12.1
を追加します。また、case $PDO_OCI_VERSION in
行(134行目)を見つけて、その下のバージョンのリストに|12.1
を追加します。ファイルを保存すれば、ここで必要なのはそれだけです。
$ phpize
$ ./configure
$ make
さて、makeはおそらくOracleヘッダーファイルが見つからないと文句を言って失敗するでしょう。 oci.h.これは、OracleサーバーまたはInstantクライアントを開発者モードでインストールしない限り、ファイルがサーバー上に存在しないためです。
Oracle.comの「Linux用のインスタントクライアントダウンロード」ページにアクセスして、ご使用のバージョンのインスタントクライアントSDKパッケージを入手してください。 Linux用のインスタントクライアントダウンロード
私の場合、このファイルをダウンロードしました: http://www.Oracle.com/technetwork/topics/linuxx86-64soft-092277.html
任意の場所でファイルを解凍します。必要なヘッダーファイルはsdk/includeフォルダーにあります。これらすべてのファイルを拡張子のincludeフォルダーにコピーします。/ usr/local/src/php_source/php-5.3.3/ext/pdo_oci/include ==
これで、makeは合格するはずです。
$ make
最終結果として、コンパイルされたpdo_oci.soモジュールが拡張ディレクトリの/ modulesサブフォルダにあります。/ usr/local/src/php_source/php-5.3.3/ext/pdo_oci/modules/pdo_oci.so
PHPがサーバー上の拡張機能を格納する場所を確認します
$ php -i | grep extension_dir
拡張子(pdo_oci.so)をそのディレクトリにコピーします。
モジュールを有効にする方法はいくつかあります。 1つはメインのphp.iniファイルに含めることですが、私の場合は、他のモジュールの他の.iniファイルが存在し、PHPによって含まれるフォルダーに別の.iniファイルを作成しました。起動。
そこで、次の内容のファイル/etc/php.d/pdo_oci.iniを作成しました。
; Enable pdo_oci extension module
extension=pdo_oci.so
または、同じ行をphp.iniファイルに追加することもできます。
$ /etc/init.d/httpd restart
PHP CLIがインストールされている場合は、ロードされているモジュールのリストを確認できます。それ以外の場合は、phpinfo()を含むPHPファイルを作成し、出力を確認します。出力にPDO_OCIが表示されている場合は、おめでとうございます。
$ php -m
ソースからPHP拡張機能をコンパイルする方法に関する元の投稿をしてくれたMattiasGeniarに感謝します: https://ma.ttias.be/how-to-compile-and-install-php-extensions -from-source /
答えは、これの複製です 記事 (ロシア語)これは、これに基づいています 投稿 いくつかの修正が加えられています。数日間の無駄な検索の後、それは私にとってスムーズに機能しました。
管理者権限が必要です
次のパッケージでphp5をインストールする必要があります。
Sudo apt-get install php5 php5-dev php-pear php5-cli
Sudo pecl install pdo
Libaio1ライブラリがインストールされている必要があります。
Sudo apt-get install libaio1
OracleのWebサイト(Oracle.com/technetwork/database/features/instant-client/index-097480.html)から、プロセッサアーキテクチャとOS用のOracleインスタントクライアントをダウンロードします。
Linuxの場合、インスタントクライアントには2つのオプションがあります。Linux、CentOS、Fedora、Red Hat Enterprise Linux、Mandriva Linux、SUSE LinuxなどのRPMパッケージです。Zipアーカイブ—RPMをサポートしていない他のすべての場合。
ダウンロードするファイルは2つあります。
instantclient-basic —Oracleインスタントクライアント自体
instantclient-sdk —アプリケーション開発用のライブラリのセット
Oracle Instant Client用のディレクトリを作成します(ソフトウェア拡張用に予約されている/ optディレクトリはこの目的に適しています)。
Sudo mkdir -p /opt/Oracle/
ダウンロードしたファイルを/ opt/Oracleに移動し、宛先フォルダに切り替えます(「Zip」アーカイブをユーザーの「downloads」ディレクトリにダウンロードしたと仮定します)。
Sudo mv ~/downloads/instantclient-*.Zip /opt/Oracle/
cd /opt/Oracle/
ダウンロードしたアーカイブの抽出:
Sudo unzip instantclient-basic-*-*.Zip
Sudo unzip instantclient-sdk-*-*.Zip
最後に、Oracle Instant Client11.2.0.2.0用にinstantclient_11_2
に/opt/Oracle
ディレクトリが作成されています。このディレクトリの名前を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 Instant Client Libraryを検索するディレクトリの名前を含む構成ファイルを作成し、それを有効にします。
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
コマンドでインストールされます。
Sudo pecl install oci8
oracle Instant Clientへのパスの入力を求められたら、次のように応答します。
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をインストールするには、pearリポジトリ(pear.php.net)からダウンロードします。
洋ナシのパッケージリストを更新します。
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*
ここでは、Oracle Instant Clientのバージョンに関する情報が含まれていないため、config.m4
ファイルを修正する必要があります。ファイルを開き、「+」でマークされた変更を追加します(バージョン番号に注意してください)。
Sudo vim config.m4
以下は、2つのファイルのdiff
です。
***************
*** 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.net/manual/ru/install.pecl.phpize.php)コマンドを使用して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