php在linux中的配置,在Linux上为PHP配置OCI8连接

01fac6460a22031b8af8da5848698a70.png

Oracle 11g 客户端可以很方便地帮助PHP连接到远程Oracle数据库。本问介绍如何安装PHP以及其OCI8 扩展以及 Oracle客户端到Windows和Linux平台上。更详细的介绍可以阅读这里The Underground PHP and Oracle Manual。

OCI8是PHP的扩展组件用以连接和操纵Oracle数据库(该名字源于Oracle中’C call interface’ API接口,该API最早在Oracle8中公布)。OCI 8 是开源的且已包括在PHP中了。

Oracle 简洁客户端(Instant Client)是一套免费且易安装的库文件,可以允许应用程序连接到远程数据库中。当Oracle数据库Sever端在本地时,该客户端不再是必要的。

当使用11g客户端,其中的OCI8 函数将支持Oracle 9.2,10.x,以及11.x的数据库。

软件需求:

软件

注意

下载”Instant Client Package – Basic”,也需要” Instant Client Package – SDK”

在Linux平台上启用PHP的OCI8扩展

在Linux平台上PHP往往需要重新编译。若用户使用Oracle Enterprise Linux,则预编译好的PHP RPM包可以直接从oss.oracle.com上下载。

为了搭建PHP和OCI8:

1. 你需要下载Apache HTTPD Server,且下载PHP 5.2 source code 即PHP 5.2源码,根据安装手册安装PHP与APACHE。在这里不需要为OCI8配置什么。

2. 从OTN上下载基础和SDK客户端包,地址:Instant Client page。ZIP或RPM格式均可。

开始安装包:

rpm -Uvh oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm

rpm -Uvh oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm

以上第一个RPM包将Oracle库文件安置在usr/lib/oracle/11.1/client/lib,而第二个在/usr/include/oracle/11.1/client建立头文件。

3. 从PECL上下载最新的OCI 8 1.3.5扩展将覆盖PHP 5.2源码中的默认版本。手动下载并如此安装:

pecl install oci-1.3.5.tgz

或最新版本可直接如此下载安装:

pecl install oci8

输出如下:

downloading oci8-1.3.5.tgz …

Starting to download oci8-1.3.5.tgz (137,987 bytes)

…..done: 137,987 bytes

10 source files, building

running: phpize

Configuring for:

PHP Api Version: 20041225

Zend Module Api No: 20060613

Zend Extension Api No: 220060519

1. Please provide the path to the ORACLE_HOME directory.

Use ‘instantclient,/path/to/instant/client/lib’ if you’re compiling with Oracle Instant Client : autodetect

1-1, ‘all’, ‘abort’, or Enter to continue:

若您安装了Instant Client RPM包,回车后PECL将自动定位RPM包并安装OCI8.so共享库文件。

4. 修改php.ini并确认extension_dir 指向了oci8.so所在目录

并在php.ini中加上: extension=oci8.so,启用oci 8。

5. 将Instant Client(简洁客户端)的目录添加到/etc/ld.so.conf中,或手动设置LD_LIBRARY_PATH包含目录/usr/lib/oracle/11.1/client/lib,并重启Apache。 在重启Apache前要设好Oracle环境变量,如下脚本:

#!/bin/sh

LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client/lib:${LD_LIBRARY_PATH}

export LD_LIBRARY_PATH

echo Starting Apache

/usr/sbin/apachectl start

以上脚本未设置NLS_LANG等语言环境变量,即使用默认环境。

现在来确认扩展是否正确安装,我们可以通过以下php脚本予以确认:

phpinfo();

?>

自浏览器打开该脚本地址URL,如http://localhost/phpinfo.php,若显示页面出现”oci8”说明配置成功。

下面我们尝试连接Oracle数据库,Oracle授权以及数据库信息会返回给oci_connect()函数以创建连接。一般我们要用到一个tnsname以便远程连接,不懂得话建议你阅读下Oracle的基础文档,除了Net connection identifier(网络连接id 可能是tnsname也可能是easyconnect字符串等)外当然还需要用户名和密码。有好几种方法可以通过PHP连接数据库,下面是其中一个示例使用Oracle的EasyConnect语法的链接标示并要求以HR用户模式登陆名为MYDB的远程数据库:

$c = oci_connect(‘hr’, ‘hr_password’, ‘//mymachine.mydomain/MYDB’);

您可能需要阅读Oracle Using the Easy Connect Naming Method文档以便了解EasyConnect。

注意在数据库中HR用户可能被锁住了,我们假设你是一位称职的DBA,可以很容易解决这类问题。

开始尝试在PHP上使用Oracle,下面是个简单的示例,你可能需要修改其中连接标示(指’mymachine.mydomain/MYDB’这个)以便连接自己的数据库,示例用以显示HR用户拥有的所有表:

$conn = oci_connect(‘hr’, ‘hr_password’, ‘mymachine.mydomain/MYDB’);

$query = ‘select table_name from user_tables’;

$stid = oci_parse($conn, $query);

oci_execute($stid, OCI_DEFAULT);

while ($row = oci_fetch_array($stid, OCI_ASSOC)) {

foreach ($row as $item) {

echo $item.” “;

}

echo “
\n”;

}

oci_free_statement($stid);

oci_close($conn);

?>

问题:

检查Apache错误日志文件,避免可能发生的启动错误。

零时打开display_error=on选项以显示脚本中的问题,这需要在php.ini中加入” display_error=on”。

用SQL*PLUS检测可能的环境问题等。

结语

安装Oracle简洁客户端以及OCI 8扩展十分简便,各组件安装和更新也很容易。

未来PHP 5.3将默认包含OCI 8 1.3版扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值