Ubuntu+php7.2 安装oracle 插件
1、安装Oracle Client
由于要编译OCI扩展,我们需要Oracle客户端,这里我们下载Oracle Instant Client,选择Instant Client for Linux x86-64 basic
版本下载。
另外要编译OCI必须还需要instant client SDK
包,下载解压之后合并到Base。
给出的网页最后面也有安装步骤,这里简述一下
- 解压zip包,放置到某个目录下
- 为当前版本的Instant Client创建合适的链接
- 设置环境变量
输入: sudo unzip instantclient-basic-linux.x64-12.1.0.2.0.zip
输入: sudo unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip
输入: sudo mv instantclient_12_1/ /opt/oracle/
输入: cd /opt/oracle/instantclient_12_1/
# 建立符号链接
输入: sudo ln -s libclntsh.so.12.1 libclntsh.so
输入: sudo ln -s libocci.so.12.1 libocci.so
# 打开 /etc/profile 在最后面加入
输入: export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1:$LD_LIBRARY_PATH
输入: export PATH=/opt/oracle/instantclient_12_1:$PATH
# 最后source一下,使配置生效
输入: source /etc/profile
2、安装php扩展oci8
输入: sudo pecl install oci8
安裝期間會出現
Please provide the path to the ORACLE_HOME directory. Use ‘instantclient,/path/to/instant/client/lib’ if you’re compiling with Oracle Instant Client [autodetect] :
输入: instantclient,/opt/oracle/instantclient_12_1
输入: sudo vi /etc/php/7.2/fpm/php.ini
php.ini 文字中添加:extension = oci8.so
输入: sudo service php7.2-fpm restart
查看phpinfo显示ioc8
window php7 安装oracle 插件
wamp 环境
1 、安装oralce Instant Client Oracle Instant Client, Instant Client for Microsoft Windows (x64)
解压到 D:\ORACLE\instantclient_12_1
2 、创建环境变量
ORACLE_HOME = D:\ORACLE\instantclient_12_1
Path中,增加 D:\ORACLE\instantclient_12_1
3、下载插件 PECL :: Package :: oci8 2.2.0 for Windows 或者 windows.php.net - /downloads/pecl/releases/oci8/
复制php_oci8.dll,php_oci8_11g.dll,php_oci8_12c.dll 到wamp\bin\php\php7.0.10\ext
4、修改php.ini
wamp 集成环境的php.ini 是wamp\bin\php\php7.0.10\phpForApache.ini
去掉php_oci8.dll 和 php_oci8_11g.dll的分号
5、重启服务 phpinfo中查看oci8是否安装成功
php代码测试连接
$connect = oci_connect('username','password','ip:port/servicename') or die('数据库连接失败');
$sql = "SELECT * FROM test WHERE ROWNUM <= 10";
$testDataBase = oci_parse($connect,$sql);
oci_execute($testDataBase,OCI_DEFAULT);
$result=oci_fetch_row($testDataBase);
var_dump($result);
可能出现的问题
1、无法加载动态库'oci8.so'(PHP 7.2) - IT屋-程序员软件开发技术分享社区
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory)
oci8.so本身依赖于多个共享库,您可以使用ldd找出哪些共享库:
ldd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so
这些.so文件似乎是存储库中zip文件的一部分. 像D_LIBRARY_PATH=/usr/local/instantclient_12_1/ php这样运行PHP可以在您的容器中正常运行.您需要将这些文件移动到合理的位置.
将依赖的.so文件放到oci8.so同级目录或者确保环境变量D_LIBRARY_PATH是否设置,echo D_LIBRARY_PATH可以查看。
2、环境变量设置不正确影响crontab, crontab可能不识别环境变量。