《PHP》浅谈Win+Apache+PHP+oracle环境部署

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 可以阅读相关的手册。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190117G1DJPL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券