最近开发一个数据报送系统,系统使用PHP开发本地数据mysql,但是其中有个一块业务数据需要从orcal数据库里面读取,php通过sql语句直接读取业务数据入库。
一般的php环境是没有orcal扩展模块,所以需要拓展编译orcal扩展模块;
服务器上的php版本:php7.2.11
扩展前台需要在linux服务器上安装orcal客户端:
basic-10.2.0.5.0-linux-x64.zip
sdk-10.2.0.5.0-linux-x64.zip
官网下载 需要注册
这两个文件直接本地加压合并,sdk-10.2.0.5.0-linux-x64解压后里面有个sdk文件夹直接放到basic-10.2.0.5.0-linux-x64下面就可以了,解压后目录instantclient_10_2上传服务器;
我放在了/usr/local/instantclient_10_2
ln -s libclntsh.so.12.1 libclntsh.so
ln -s libclntsh.so.12.1 libclntsh.so
注意 libclntsh.so.12.1 根据下载版本不同而不同。如在 Oracle11.* 的版本则为 libclntsh.so.11.1。而且该链接必须配置,否则在以下的 configure 配置步骤将会报错而导致配置失败。
配置环境变量
vim /etc/profile
export ORACLE_HOME=/usr/local/instantclient_10_2
export LD_LIBRARY_PATH=/usr/local/instantclient_10_2
export PATH=$ORACLE_HOME:$LD_LIBRARY_PATH:$PATH
source /etc/profile
echo $PATH
开始编译oci8和pdo_oci
1、进入php7.2.11/ext/oci8
phpize
./configure --with-php-config=/www/lanmps/php/bin/php-config --with-oci8=shared,instantclient,/usr/local/instantclient_10_2
make && make install
2、进入php7.2.11/ext/pdo_oci
phpize
./configure --with-php-config=/www/lanmps/php/bin/php-config --with-pdo-oci=instantclient,/usr/local/instantclient_10_2
make && make install
修改php.ini
[oci8]
extension = /*/no-debug-non-zts-20170718/oci8.so
extension = /*/no-debug-non-zts-20170718/pdo_oci.so
重启php-fpm
php -m //重启php查看扩展是否添加
测试脚本
<?php
$conn = oci_connect('用户名', '密码', 'IP地址/数据库');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}else {
echo "连接oracle成功!";
}
?>