Error loading oci8.so with Ubuntu server 17.04 php 7 and apache2

陌路散爱 提交于 2019-12-18 07:12:52

问题


I have gone through the whole process of downloading Oracle instant client, SDK, etc. in a Ubuntu Server 17.04. Then converted rpm packages to deb with alien, installed, set the paths, downloaded pecl oci8, compiled and installed (w/o errors), etc. and then added the line:

extension=/usr/lib/php/20151012/oci8.so

And restarted. When I check the /var/log/apache2/error.log I see:

PHP 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
[Thu Jul 20 10:46:44.352631 2017] [mpm_prefork:notice] [pid 23450] AH00163: Apache/2.4.25 (Ubuntu) configured -- resuming normal operations
[Thu Jul 20 10:46:44.352717 2017] [core:notice] [pid 23450] AH00094: Command line: '/usr/sbin/apache2'

Does any one know what I could do to make it work? I guess I have not selinux enabled or maybe it is a permissions problem?

Thanks


回答1:


The solution is to put the ORACLE global variables NOT in /etc/environment but in the /etc/apache2/envvars

So, I've added these 2 lines at the end of /etc/apache2/envvars

export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/12.2/client64

And all working great




回答2:


As you still will have the same problem with php cli with the above solution, it would be better to add a new file /etc/ld.so.conf.d/oracle.conf with this content:

/usr/lib/oracle/12.2/client64/lib

Then run

sudo ldconfig

This way it works for apache and php cli and you do not need to change /etc/apache2/envvars




回答3:


With Linux Ubuntu 18, if you're getting the same message, but its command line version: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20170718/oci8' when using php cli (= command line, as opposed to php as an apache module), all you need to do is to set LD_LIBRARY_PATH (not ORACLE_HOME), inside of /etc/environment, as shown below:

export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2

Next time you open a shell, the environment will declare this variable.

Note that the variable value needs to point to the folder that contains the lib*.so files.

Verification: open a new console, and run php -m | grep oci8



来源:https://stackoverflow.com/questions/45217148/error-loading-oci8-so-with-ubuntu-server-17-04-php-7-and-apache2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!