Ubuntu20+PHP7.4にOCI8をインストールする
PHP7.4からoci8の使用するための環境を作成します。
内容としては「Install OCI8 on Ubuntu 20.04 with PHP 7.4」をほぼそのまま踏襲しています。
ただ、インストールの途中でPHP8に変わってしまうので、PHP7.4に戻す必要があります。
そのあたりを追記しています。
目次
1)ClientとSDKをダウンロードします。
こちらよりダウンロードします。
「Oracle Instant Client Downloads for Linux x86-64 (64-bit)」
・Basic Package: instantclient-basic-linux.x64-21.7.0.0.0dbru.zip
・SDK Package: instantclient-sdk-linux.x64-21.7.0.0.0dbru.zip
2)作業場所を作成します。
※ここからはrootとして作業します。
# mkdir /usr/lib/oracle
# mkdir /usr/lib/oracle/21.1
# mkdir /usr/lib/oracle/21.1/client64
3)解凍します。
# cp instantclient-basic-linux.x64-21.7.0.0.0.zip /usr/lib/oracle/21.1/client64
# cp instantclient-sdk-linux.x64-21.7.0.0.0.zip /usr/lib/oracle/21.1/client64
# cd /usr/lib/oracle/21.1/client64
# unzip instantclient-basic-linux.x64-21.7.0.0.0.zip
# unzip instantclient-sdk-linux.x64-21.7.0.0.0.zip
# mv instantclient_21_7 lib
4)シンボリックリンクを作成します。
シンボリックリンクが設定されていたら下記の作業は不要です。
# cd /usr/lib/oracle/21.1/client64/lib/
# ln -s libclntsh.so.21.1 libclntsh.so
# ln -s libocci.so.21.1 libocci.so
5)パスにファイルを設定し,反映する
# echo /usr/lib/oracle/21.1/client64/lib > /etc/ld.so.conf.d/oracle.conf
# ldconfig
6)PHP環境をインストールする
# apt install php-dev php-pear build-essential libaio1
このあと、phpがphp8になってしまうため、PHP7.4に戻す
# apt install php7.4-dev
# update-alternatives –set phpize /usr/bin/phpize7.4
# update-alternatives –set php /usr/bin/php7.4
# update-alternatives –set php-config /usr/bin/php-config7.4
※php7.4だけだと、OCI8クライアントのインストールでmakeエラーとなる。
# ls -al /etc/alternatives/php-config
/etc/alternatives/php-config -> /usr/bin/php-config7.4
# ls -al /etc/alternatives/php
/etc/alternatives/php -> /usr/bin/php7.4
# ls -al /etc/alternatives/phpize
/etc/alternatives/phpize -> /usr/bin/phpize7.4
7)OCI8をインストールする
・PECLを更新する
# pecl channel-update pecl.php.net
Updating channel “pecl.php.net”
Update of Channel “pecl.php.net” succeeded
・OCI8をインストールする
PHP7.xの場合は # pecl install oci8-2.2.0
PHP8.xの場合は # pecl install oci8
Instant Clientへのパスが要求されたときは下記を入力する
instantclient,/usr/lib/oracle/21.1/client64/lib
こんな結果が表示される
Build process completed successfully
Installing ‘/usr/lib/php/20190902/oci8.so’
install ok: channel://pecl.php.net/oci8-2.2.0
configuration option “php_ini” is not set to php.ini location
You should add “extension=oci8.so” to php.ini
8)Apacheに反映する
# echo “extension=oci8.so” >> /etc/php/7.4/cli/php.ini
php-fpm使ってるときは
# echo “extension=oci8.so” >> /etc/php/7.4/fpm/php.ini
# systemctl restart apache2
9)モジュールを追加する
# cd /etc/php/7.4/mods-available/
# vi oci.ini 新規ファイル
下記を追加する
extension = oci8.so
10)Apacheにiniファイルを追加する
# cd /etc/php/7.4/apache2/conf.d
php-fpm使ってるときは
# cd /etc/php/7.4/fpm/conf.d
# ln -s /etc/php/7.4/mods-available/oci.ini 20-oci.ini
# systemctl restart apache2
11)確認する
$ php -i | grep oci
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20