web-dev-qa-db-ja.com

Ubuntu 18.04にOracle OCI8インスタントクライアントをインストールする方法

Oracleデータベースにアクセスするために、OCI8インストールに関する情報を共有したいと思います。

PHP Startup:Unable to load dynamic library 'oci8.so' "のようなエラーが発生した場合

または "Oracle Instant Clientライブラリバージョンの互換性を確認しています...構成:エラー:libclntsh.soから/opt/Oracle/instantclient/libclntsh.so.*.1へのリンクが見つかりません"

または、Quick&Easy OCI8をインストールして、phpとOracleデータベースの間の接続を取得したいだけなのです。

3
FixFaier

最初の前提条件は、動作中のApache2およびphp7.2(Ubunti 18.04)環境です。

  1. Oracle Webサイトから基本(instantclient-basic-linux.x64-12.2.0.1.0.Zipなど)とsdk(instantclient-sdk-linux.x64-12.2.0.1.0.Zip)パッケージをダウンロードします http://www.Oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

  2. 両方のファイルをウェブサーバーにアップロードします。WinSCPを使用できます

  3. サーバーで両方のファイルを解凍すると、私の場合、「instantclient_12_2」という名前の新しいフォルダーが作成されます

4a。宛先フォルダを作成

mkdir/opt/Oracle

4b。 instantclientフォルダーを移動して名前を変更する

mv instantclient_12_2/opt/Oracle/instantclient

4c。フォルダの権限を変更する

chown -R root:www-data/opt/Oracle

  1. OCI8のインストールに必要なパッケージがあるかどうかを確認します

apt install php7.2-dev php-pear build-essential libaio1

  1. 必要なソフトリンクを作成する

ln -s /opt/Oracle/instantclient/libclntsh.so.12.1 /opt/Oracle/instantclient/libclntsh.so

ln -s /opt/Oracle/instantclient/libocci.so.12.1 /opt/Oracle/instantclient/libocci.so

7a。 ld設定ファイルにインスタントクライアントを追加する

echo/opt/Oracle/instantclient> /etc/ld.so.conf.d/Oracle-instantclient.conf

7b。ダイナミックリンカーランタイムバインディングの更新

ldconfig

8a。 peclでOCI8をインストールします

pecl install oci8

8b。 OCI8のインストールで正しいフォルダが要求されます

instantclient、/ opt/Oracle/instantclient

9a。 oci libをcli php configに追加します(コンソールphp)

echo "extension = oci8.so" >> /etc/php/7.2/cli/php.ini

9b。 oci libをApache php設定に追加します

echo "extension = oci8.so" >> /etc/php/7.2/Apache2/php.ini

10a。 CLIバージョンの環境変数を設定します(後でサーバーを再起動する必要があります)

echo "LD_LIBRARY_PATH = \"/opt/Oracle/instantclient\"" >>/etc/environment

echo "Oracle_HOME = \"/opt/Oracle/instantclient\"" >>/etc/environment

10b。 Apacheバージョンの環境変数を設定する

echo "export LD_LIBRARY_PATH = \"/opt/Oracle/instantclient\"" >>/etc/Apache2/envvars

echo "export Oracle_HOME = \"/opt/Oracle/instantclient\"" >>/etc/Apache2/envvars

  1. Apacheを再起動します

サービスApache2の再起動

  1. これで、Oracleデータベースへの接続をテストできます。

= PHPの接続例=

<?php
// Create connection to Oracle, change Host IP and SID string!
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 000.000.000.000)(PORT = 1521)))(CONNECT_DATA=(SID=XXX)))";
// Enter here your username (DBUSER) and password!
$conn = oci_connect("DBUSER", "PASSWORD",$db);
if (!$conn) {
   $m = oci_error();
   echo $m['message']. PHP_EOL;
   exit;
}
else {
   print "Oracle database connection online". PHP_EOL;
}

?>
10
FixFaier