最近公司有个购买项目,使用的是oracle数据库,想用PHP直接读取数据库做一些数据分析,这样就需要使用PHP连接oracle!
本地使用的window64+php5.5,需要连接的测试服务器的oracle版本为oracle10g!
1.首先需要打开本php的oci8扩展,
打开php.ini文件,去除extension=php_oci8.dll 前的‘;’。
使用phpinfo查看,发现并没有加载ico8。
2.安装本地oracle
首先下载三个文件,官网下载(可能需要FQ下载)
1).instantclient-basic-win-x86-64-10.2.0.3.0.zip
2).instantclient-odbc-win-x86-64-10.2.0.3.0.zip
3).instantclient-sqlplus-win-x86-64-10.2.0.3.0.zip
或者CSDN下载,我已打包上传
下载地址:http://download.csdn.net/detail/tao5220268/8597681
下载完成以后,
将下载的安装包全部解压,放在同一个目录下,比如在D:\oracle-client。
添加环境变量
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK(或AMERICAN_AMERICA.ZHS16GBK)
TNS_ADMIN = D:\oracle-client
LD_LIBRARY_PATH = D:\oracle-client
SQLPATH = D:\oracle-client
3.在D:\oracle-client目录下创建TNSNAME.ORA文件,自己敲容易出问题,建议直接到安装oracle数据库的机器上拷贝过来用,内容如下:
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.208.120)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
以上代码中,ORCL是个连接标示符,可以自己修改,HOST是远程Oracle服务器的地址,PORT是Oracle的服务端口,没有修改过的话,默认是1521。Service_name是远程实例名称。
4.命令行下,切换到D:\oracle-client,运行odbc_install.exe,安装ODBC驱动。
5.重启apache或者nginx,打开phpinfo,查看oci8已加载!
6.php测试链接oracle
<?php $db_server = "localhost"; $db_user = "atyu30"; $db_pass = "atyu30"; $db_sid = "atyu30"; $dbconn=OCILogon($db_user,$db_pass,"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=127.0.0.1)(PORT = 1521))(CONNECT_DATA =(SID=$db_sid)))"); if($dbconn!=false) { echo "连接"; echo "DB服务器:".$db_server; echo "用户:".$db_user; echo "口令:".$db_pass; echo "SID:".$db_sid; echo "成功\n"; if(OCILogOff($dbconn)==true) { echo "关闭连接成功!"; } } else { echo "连接失败"; } ?>