2017-12-12 3 views
0

Ich habe ein Docker Image mit PHP7.0-FPM und Apache 2.4 erstellt. Ich habe instant 12,2 (basic + sdk) installiert und ich habe oci8 wie folgt installiert:PHP7.0-FPM mit Docker: Kann dynamische Bibliothek OCI8 nicht laden

RUN echo "instantclient,/usr/lib/oracle/12.2/instantclient"| pecl install oci8 && \ echo "extension=oci8.so" > /etc/php/7.0/mods-available/oci8.ini && \ ln -s /etc/php/7.0/mods-available/oci8.ini /etc/php/7.0/fpm/conf.d/20-oci8.ini

Ich weiß nicht, warum, aber ich bin immer diese Warnung, wenn ich (neu) starten php7.0- fpm:

# service php7.0-fpm restart * Restarting PHP 7.0 FastCGI Process Manager php-fpm7.0 Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/oci8.so' - libmql1.so: cannot open shared object file: No such file or directory in Unknown on line 0

Standorte von oci8.so und libmql1.so scheint in Ordnung zu sein:

# ll /usr/lib/oracle/12.2/instantclient/ 
total 216700 
drwxrwxrwx 3 root www-data  4096 Dec 11 15:12 ./ 
drwxr-xr-x 4 root www-data  4096 Dec 12 08:24 ../ 
-rwxrwxrwx 1 root www-data  363 Jan 26 2017 BASIC_README* 
-rwxrwxrwx 1 root www-data  44220 Jan 26 2017 adrci* 
-rwxrwxrwx 1 root www-data  57272 Jan 26 2017 genezi* 
lrwxrwxrwx 1 root www-data  52 Dec 11 15:02 libclntsh.so -> /usr/lib/oracl 
e/12.2/instantclient/libclntsh.so.12.1* 
-rwxrwxrwx 1 root www-data 71638263 Jan 26 2017 libclntsh.so.12.1* 
-rwxrwxrwx 1 root www-data 8033199 Jan 26 2017 libclntshcore.so.12.1* 
-rwxrwxrwx 1 root www-data 2981501 Jan 26 2017 libipc1.so* 
-rwxrwxrwx 1 root www-data 539065 Jan 26 2017 libmql1.so* 
-rwxrwxrwx 1 root www-data 6568149 Jan 26 2017 libnnz12.so* 
lrwxrwxrwx 1 root root   50 Dec 11 15:12 libocci.so -> /usr/lib/oracle/ 
12.2/instantclient/libocci.so.12.1* 
-rwxrwxrwx 1 root www-data 2218687 Jan 26 2017 libocci.so.12.1* 
-rwxrwxrwx 1 root www-data 124771800 Jan 26 2017 libociei.so* 
-rwxrwxrwx 1 root www-data 158543 Jan 26 2017 libocijdbc12.so* 
-rwxrwxrwx 1 root www-data 380996 Jan 26 2017 libons.so* 
-rwxrwxrwx 1 root www-data 116563 Jan 26 2017 liboramysql12.so* 
-rwxrwxrwx 1 root www-data 4036257 Jan 26 2017 ojdbc8.jar* 
drwxrwxrwx 5 root www-data  4096 Jan 26 2017 sdk/ 
-rwxrwxrwx 1 root www-data 240476 Jan 26 2017 uidrvci* 
-rwxrwxrwx 1 root www-data  74230 Jan 26 2017 xstreams.jar* 

ich habe zu /etc/php/7.0/fpm/pool.d/www.conf dded diese 4 Zeilen:

env[LD_LIBRARY_PATH] = /usr/lib/oracle/12.2/instantclient env[TNS_ADMIN] = /etc/oracle env[ORACLE_BASE] = /usr/lib/oracle/12.2/instantclient env[ORACLE_HOME] = /usr/lib/oracle/12.2/instantclient

Würde ich etwas verpasst haben?

Dank

Antwort

0

Es ist in Ordnung! mir fehlte ein .conf in /etc/ld.so.conf.d/oracle-instantclient.conf

RUN echo "instantclient,/usr/lib/oracle/12.2/instantclient"| pecl install oci8 && \ 
echo "extension=oci8.so" > /etc/php/7.0/mods-available/oci8.ini && \ 
ln -s /etc/php/7.0/mods-available/oci8.ini /etc/php/7.0/fpm/conf.d/20-oci8.ini && \ 
echo /usr/lib/oracle/12.2/instantclient > /etc/ld.so.conf.d/oracle-instantclient.conf && \ 
ldconfig 
+0

Das könnte auch der Grund dafür sein, dass echo die angegebene Datei öffnet, auch wenn sie nicht mit leeren Zeilen vorhanden ist, versuchen Sie es mit .conf –

0

versuchen, diese env Variable Zugabe in/etc/apache2/envvars am Ende der Datei hinzufügen, wie

  • export LD_LIBRARY_PATH =/usr/lib/oracle/12,2/instant

  • Export TNS_ADMIN =/etc/oracle

  • Export ORACLE_BASE =/usr/lib/oracle/12,2/instant

  • export ORACLE_HOME =/usr/lib/oracle/12,2/instant

Damit Apache-Benutzer werden diese Variable zur Laufzeit verwenden. Und überprüfen Sie auch für Benutzer/Gruppe Erlaubnis muss es sein ww-Daten: www-Daten

+0

Dank für Ihre Antwort danken. Ich habe es schon getan, aber es gibt keine Änderungen. Auch ich denke es ist php-fpm und nicht Apache, nein? – M4kn4sh

+0

Legen Sie ORACLE_HOME oder ORACLE_BASE für Instant Client nicht fest. Sie werden für die vollständige Oracle-Datenbank und vollständige Oracle-Client-Installationen verwendet. –

Verwandte Themen