最近要用Php远程连接第三方的oracle数据库,安装oracle拓展搞了好久,终于弄出来了,现在分享出来:
1,注意安装的客户端版本要和服务端的版本一致,不然会有异常
2,安装之前先要下载三个软件:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载对应oracle的版本:
basic-10.2.0.5.0-linux-x64.zip
sdk-10.2.0.5.0-linux-x64.zip
http://pecl.php.net/package/oci8 下载PHP的oci8扩展:oci8-2.0.8.tgz
3,开始安装:
1):将三个软件上传到服务器,解压缩basic-10.2.0.5.0-linux-x64.zip到/usr/local/下,解压后的路径:/usr/local/instantclient_10_2
2):解压缩sdk-10.2.0.5.0-linux-x64.zip 里面有个sdk,将sdk复制到/usr/local/instantclient_10_2
3):解压缩oci8-2.0.8.tgz,进去oci8-2.0.8目录:执行phpize命令
4):然后执行:./configure --with-oci8=shared,instantclient,/usr/local/instantclient_10_2(也是在oci8-2.0.8目录执行)
5):在执行 ./configure 的时候,会提示 “checking Oracle Instant Client library version compatibility... configure: error: Link from /usr/local/instantclient_10_2/libclntsh.so to /usr/local/instantclient_10_2/libclntsh.so.*.1 not found”的错误,此时只要在 /usr/local/instantclient_10_2/ 目录下做一个符号链接就可以了:
进入/usr/local/instantclien_10_2目录:执行 ln -s libclntsh.so.10.1 libclntsh.so命令
6):重复步骤4
7):执行:make && make install命令
8):修改php.ini,在最后加上extension=oci8.so
9):重启apache:service httpd restart
10):测试连接oracle:代码:
$conn = OCILogon('username','pwd','(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT = 1521))(CONNECT_DATA =(SID=dbname)))');
if (!$conn) {
$Error = oci_error();
print htmlentities($Error['message']);
exit;
}
else
{
echo "Connected Oracle Successd!";
}
4,安装配置成功
5,远程连接数据库时查询出来的数据会出现中文是问号或乱码的问题,解决办法:在页面头部加入代码:
header("Content-type:text/html;charset=GB2312");
putenv("NLS_LANG=Simplified Chinese_china.ZHS16GBK");
注意文件保存时的编码也存为gbk