2017-12-12 31 views
0

PHP7.0-FPM 및 Apache 2.4로 도커 이미지를 만들었습니다. 나는 InstantClient 12.2 (기본 +의 SDK)를 설치하고이 같은 OCI8을 설치 한 :Docker가있는 PHP7.0-FPM : 동적 라이브러리 OCI8을로드 할 수 없습니다.

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

나는 이유는 모르겠지만, 내가 (다시) php7.0- 시작할 때이 경고를 얻고있다 FPM : oci8.so 및 libmql1.so의

# 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

위치가 확인 될 것으로 보인다 :

# 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* 

나는이

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

내가 뭔가를 놓친 것이다 :이 4 선 /etc/php/7.0/fpm/pool.d/www.conf에 dded?

감사

그 ENV 변수를 추가

답변

0

괜찮습니다! 나는 .conf/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

에코가 지정된 파일을 열어도 빈 줄이없는 경우에도 그 이유가 될 수 있습니다. –

0

시도에/등/아파치/envvars

  • 수출 LD_LIBRARY_PATH =는/usr/lib 디렉토리/오라클/12.2/instantclient처럼, 파일의 마지막에 추가

  • 수출 TNS_ADMIN =은/etc/오라클

  • 수출 ORACLE_BASE =는/usr/lib 디렉토리/오라클/12.2/instantclient

  • 수출 ORACLE_HOME =는/usr/lib 디렉토리/오라클/12.2/instantclient

은 그래서 아파치 사용자는 런타임에 그 변수를 사용합니다. 또한 www-data : www-data가되어야하는 사용자/그룹 권한을 확인하십시오.

+0

이 답변에 감사드립니다 누락되었습니다. 나는 이미 끝 냈지만 변화가 없다. 또한 php-fpm이고 아파치가 아니라고 생각합니다. – M4kn4sh

+0

Instant Client에 ORACLE_HOME 또는 ORACLE_BASE를 설정하지 마십시오. 이들은 전체 Oracle 데이터베이스 및 전체 Oracle 클라이언트 설치에 사용됩니다. –