0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[PHP] CentOS 8にPHPとOCI8をインストールするメモ

Last updated at Posted at 2019-10-30

はじめに

CentOS 8にPHPとPHPからOracle接続するための拡張をインストールします。

手順

Oracle Instant Client をインストール

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html から RPM をダウンロードします。

BASIC パッケージと SDK パッケージです。

sudo rpm -Uvh oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
sudo rpm -Uvh oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

クライアントバージョンをどれにするかは、Oracleのサポートドキュメントを参照してください。

An Instant Client based application can interoperate with any database version that the full Oracle Client interoperates with. For example, Instant Client 12.2 allows connection to 11.2, 12.1 and 12.2 databases. Details are in the interoperability matrix in Support Doc ID 207303.1 Note that Instant Client includes a number of different Oracle tools and technologies, some of which may have more restrictive requirements.

必要なものをインストール

sudo dnf -y install php
sudo dnf -y install php-pear
# peclでのビルドに必要
sudo dnf -y install php-devel
sudo dnf -y install make

OCI8をインストール

peclでいっぱつです。
途中Oracleクライアントの場所を聞かれます。autodetectで大丈夫でした。

sudo pecl install oci8
# Oracleのパスはautodetectで大丈夫です。

/etc/php.d/30-oci8.iniファイルを作成します。

/etc/php.d/30-oci8.ini
; Enable OCI8 pear package
extension=oci8
```

## libnslをインストール

OCI8が必要としていました。

```console
sudo dnf -y install libnsl

お試し

できたかどうか、以下のようなPHPを実行してみるのが簡単です。

<?php
$oci = oci_connect('ユーザ', 'パスワード', '簡易接続文字列');
$s = oci_parse($oci, 'SELECT SYSDATE FROM DUAL');
oci_execute($s);
oci_fetch_all($s, $r);
print_r($r);
oci_close($oci);

トラブルシュート

/usr/lib64/php/modules/oci8.so は存在するのに、ファイルが見つからないというWarningが出力される。

oci8.soが必要としているライブラリがありません。

ldd /usr/lib64/php/modules/oci8.so

として、必要なライブラリを確認します。

メモ

以下はメモ書きです。
何かのご参考になれば。

Oracle Instant Client Basicパッケージでインストールされるもの

$ rpm -ql oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64
/etc/ld.so.conf.d/oracle-instantclient.conf
/usr/lib/oracle
/usr/lib/oracle/19.3
/usr/lib/oracle/19.3/client64
/usr/lib/oracle/19.3/client64/bin
/usr/lib/oracle/19.3/client64/bin/adrci
/usr/lib/oracle/19.3/client64/bin/genezi
/usr/lib/oracle/19.3/client64/lib
/usr/lib/oracle/19.3/client64/lib/libclntsh.so
/usr/lib/oracle/19.3/client64/lib/libclntsh.so.10.1
/usr/lib/oracle/19.3/client64/lib/libclntsh.so.11.1
/usr/lib/oracle/19.3/client64/lib/libclntsh.so.12.1
/usr/lib/oracle/19.3/client64/lib/libclntsh.so.18.1
/usr/lib/oracle/19.3/client64/lib/libclntsh.so.19.1
/usr/lib/oracle/19.3/client64/lib/libclntshcore.so
/usr/lib/oracle/19.3/client64/lib/libclntshcore.so.19.1
/usr/lib/oracle/19.3/client64/lib/libipc1.so
/usr/lib/oracle/19.3/client64/lib/libmql1.so
/usr/lib/oracle/19.3/client64/lib/libnnz19.so
/usr/lib/oracle/19.3/client64/lib/libocci.so.19.1
/usr/lib/oracle/19.3/client64/lib/libociei.so
/usr/lib/oracle/19.3/client64/lib/libocijdbc19.so
/usr/lib/oracle/19.3/client64/lib/liboramysql19.so
/usr/lib/oracle/19.3/client64/lib/network
/usr/lib/oracle/19.3/client64/lib/network/admin
/usr/lib/oracle/19.3/client64/lib/network/admin/README
/usr/lib/oracle/19.3/client64/lib/ojdbc8.jar
/usr/lib/oracle/19.3/client64/lib/xstreams.jar
/usr/share/oracle
/usr/share/oracle/19.3
/usr/share/oracle/19.3/client64
/usr/share/oracle/19.3/client64/doc
/usr/share/oracle/19.3/client64/doc/BASIC_LICENSE
/usr/share/oracle/19.3/client64/doc/BASIC_README
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?