web-dev-qa-db-fra.com

Impossible de charger la bibliothèque dynamique 'oci8.so' (PHP 7.2)

Depuis la mise à jour de PHP 7.1 vers PHP 7.2, je ne peux pas installer oci8. J'ai cette erreur:

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

Avertissement PHP: PHP Démarrage: impossible de charger la bibliothèque dynamique 'oci8.so' (essayé: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so (libmql1. donc: ne peut pas ouvrir le fichier objet partagé: aucun fichier ou répertoire de ce type), /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: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type)) dans Inconnu sur la ligne 0

PHP 7.2.0 (cli) (build: 12 décembre 2017 05:52:58) (NTS) Copyright (c) 1997-2017 Le groupe PHP Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies avec Zend OPcache v7.2.0, Copyright (c) 1999-2017, par Zend Technologies

J'utilise l'environnement Docker, j'ai créé un dépôt github pour cela, cela fonctionne si j'utilise la version 7.1 de PHP (- shenron/docker-php-fpm: 7.2 ).

Je ne comprends pas pourquoi le script essaie de lancer ce fichier: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so.

À mon point de vue, il y a deux possibilités; ou le pilote n'est pas compatible, ou pecl ne peut pas aujourd'hui installer oci8.

Quelqu'un at-il le même problème?

Merci de votre aide.

3
Shen

Si vous exécutez ldd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so vous donne quelque chose comme ça, avec des fichiers manquants:

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

Vous pouvez ajouter le dossier à votre ldconfig comme ceci (autres lecteurs - votre chemin peut varier):

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

Exécutez ensuite ldconfig pour lire la nouvelle configuration.

0
Greg