oracle即时客户端:https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html
https://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
使用的软件版本选择适合的,我用的是 Apache2.4,php5.6,oracle instantclient_12,因为是在win server 2008 R2上部署,不支持vc14版本的,Apache选择的是vc11
1、Apache安装
解压下载下来的软件包,进入Apache的bin目录,打开命令行终端使用命令httpd -k install即可完成安装,但是在安装Apache的时候,可能会出现一些问题。
如缺少MSVCR110.dll 的情况,只要找相应的vc++安装上即可,网上很多资源,我这里使用的是vcredist_x64.exe
在之后可能会出现下图的问题,看这里是看不出来问题的,我们按照提示打开配置文件,查看第39行,发现这是因为Apache没有找到目标路径,这就需要我们来配置这个路径,将其设置为Apache安装的实际路径。
我这边的配置文件是默认配置成变量的,有的可能并没有配置变量,需要一个个的去添加。
配置Apache,打开httpd.conf,将下列配置打开,并且路径设置为实际路径。
ServerRoot "C:\Apache"
DocumentRoot "C:/Apache/htdocs"
DirectoryIndex index.html index.php index.htm
ScriptAlias /cgi- bin/ " C:/Apache/cgi-bin"
修改路径之后,服务能正常启动,即表示安装完成。
2、安装PHP
同样是将下载下来的php软件包即可,php有线程安全和非线程安全两种版本,主要根据部署环境来区分的,下面列出了使用的环境,这里使用的是线程安全版本。
win + IIS + FastCGI :使用非线程安全版本。
win+ IIS + ISAPI :使用线程安全版本。
win+ Apache + PHP(模块) :使用线程安全版本。
win+ Apache + PHP(ISAPI) :使用线程安全版本。
win+ Apache + PHP(FastCGI) :使用非线程安全版本。
安装完之后,需要配置php的配置文件,我们下载下来的有两个配置文件php.ini-development和php.ini-production,将开发环境的配置文件拷贝一份并且改名为php.ini,然后开始配置
找到 ;extension_dir = "ext" 将分号注释掉,将地址改为实际地址
找到 ;date.timezone =PRC 去掉前面的分号,设置为中华人民共和国时区
找到 ;extension=php_mbstring.dll 去掉前面的分号
至此,php已经安装配置完成。
3、oracle即时客户端安装
将下载的压缩包解压,在解压的目录中添加两层目录 /network/admin ,并且在admin目录下添加两个文件,监听配置文件 tnsnames.ora 和连接方式配置文件 sqlnet.ora 。
将sqlnet.ora配置如下即可,监听配置文件根据实际情况配置
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora
监听名=
(DESCRIPTION=(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 端口)) )
(CONNECT_DATA = (SERVICE_NAME= 服务名) ) )
再将客户端的安装路径添加进系统环境变量中,即完成部署。
4、整合Apache、PHP、Oracle
在Apache中加载php支持,路径根据实际情况
#添加php支持
LoadModule php5_module "D:/appwork/php5.6/php5apache2_4.dll"
PHPIniDir "D:/appwork/php5.6"
AddType application/x-httpd-php .php .html
在PHP中加载oracle支持,可能php的ext目录下没有php_oci8_11g.dll模块,这需要从网上找到对应php版本的模块,放入其中。
#添加oci8支持
找到 ;extension=php_oci8_11g.dll 去掉前面的分号
随便建一个php文件,输入phpinfo(); 函数 查看信息,看到oci8这个模块就表示我们整个环境已经部署完成。
5、PHP访问Oracle数据库
//第一连接方式,这种连接有个弊端,只能访问默认为1521端口的数据库
$conn = oci_connect('username','password','ip/service_name');
//第二种连接方式,需要先配置tnsnames.ora,然后使用监听名
$conn = oci_connect('username','password','监听名');
//第三种连接方式,亲测不可用,可能其他人能用,与第二种类似,把监听信息直接写出
$conn = oci_connect('username','password','DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=port)))(CONNECT_DATA=(SID=sid))');
//配置sql语句,准备执行
$stmt = oci_parse($conn,"select * from tablename");
//执行配置的sql语句
oci_execute($stmt);
//获取结果数据的所有行到一个数组,返回获取的行数
$rows = oci_fetch_all($stmt,$results);
想要更详细了解oci 可以阅读相关的手册。
领取专属 10元无门槛券
私享最新 技术干货