web-dev-qa-db-ja.com

動的ライブラリ「oci8.so」をロードできません(PHP 7.2)

PHP 7.1からPHP 7.2へのアップデート以降、oci8をインストールできません。私はこのエラーがあります:

root @ 3ab6027c8d95:/ var/www#php -v

PHP警告:PHP起動:動的ライブラリ「oci8.so」をロードできません(試行:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so(libmql1。 so:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません)、/ usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so(/ usr/local/lib/php /extensions/no-debug-non-zts-20170718/oci8.so.so:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません))行0の不明

PHP 7.2.0(cli)(built:Dec 12 2017 05:52:58)(NTS)Copyright(c)1997-2017 The PHP Group Zend Engine v3.2.0、Copyright(c)1998-2017 Zend Zend OPcache v7.2.0を使用するテクノロジー、著作権(c)1999-2017、Zend Technologies

私はDocker環境を使用しています。このためのgithubリポジトリを作成しました。バージョンを使用すると機能します7.1 of PHP( shenron/docker-php-fpm:7.2 )。

スクリプトが次のファイルを起動しようとする理由がわかりません:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so

私の見解では、2つの可能性があります。または、ドライバに互換性がないか、peclがoci8をインストールできません。

誰か同じ問題がありますか?

ご協力ありがとうございました。

3
Shen

実行中の場合ldd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.soは、ファイルが欠落している次のようなものを提供します。

ldd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so
    linux-vdso.so.1 (0x00007ffc8bfe7000)
    libclntsh.so.12.1 => /usr/local/instantclient/libclntsh.so.12.1 (0x00007fb9919e0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb991641000)
    libmql1.so => not found
    libipc1.so => not found
    libnnz12.so => not found
    libons.so => not found
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb99143d000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb991139000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb990f1c000)
    libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fb990d04000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb990afc000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb994bc8000)
    libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007fb9908fa000)
    libclntshcore.so.12.1 => not found

次のようにldconfigにフォルダーを追加できます(他のリーダー-パスは異なる場合があります)。

echo /usr/local/instantclient_12_1/ > /etc/ld.so.conf.d/Oracle-instantclient.conf

次に、ldconfigを実行して新しい構成を読み取ります。

0
Greg