php 链接oracle10g,安装PHP和Oracle10g即时客户端

安装PHP和Oracle10g即时客户端以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

9f3e185f9ad29676f4efdb18774da887.png

Oracle g Instant Client是PHP 与远程 Oracle 数据库连接的最简单方式 它只需要安装三个库

PHP 访问 Oracle 的当前 API 所使用的 Instant Client 库称作 OCI (此 C 接口的名称最早是在 Oracle 中引入的 )PHP Oracle 函数 可以直接调用 Oracle x 或 x 或者也可以为了方便起见 使用可选的抽象类 如 PEAR MDB 和 ADOdb

Instant Client 也可以使用老版本的 PHP oracle 扩展 但它调用不赞成使用的 Oracle API PHP 界或 Oracle 建议不要使用此扩展进行新的开发

要在 Apache 上将 Instant Client 与 PHP 或 连用 请遵循以下步骤 需要一个现有的 Oracle 数据库 Instant Client 不提供 Oracle 数据库 通常情况下 此数据库将位于其他计算机上 如果数据库位于本地 则 Oracle 组件一般早已可用 从而不需要 Instant Client

软件需求 软件 附注 Oracle Instant Client 下载 Instant Client Package Basic 在 Linux 上 还应下载 Instant Client Package SDK Apache HTTPD Server PHP 界仍推荐 Apache PHP — PHP 超文本处理器 版或更高版本 在 Windows 上启用 PHP OCI 扩展

Instant Client 二进制文件是 PHP 的 Windows 预构建二进制文件的补充下载 PHP 二进制压缩文件(不是安装程序版本)和 Apache 按照 PHP 手册中的 Windows 系统上的安装安装它们 OTN 的开放源代码开发人员中心包含有用背景资料的链接 如 在 Windows /XP 上安装 Oracle PHP 和 Apache 它介绍了如何安装传统 完整的 Oracle g 版本(Instant Client 不需要此版本)

继续操作之前检查 PHP 是否正常运行 此阶段未启用 Oracle 支持

从 OTN 的 Instant Client 页面下载用于 Windows 的 Instant Client Basic 程序包 此压缩文件的大小大约为 MB

创建一个子目录(例如 c:\instantclient _ ) 然后从压缩文件中复制以下库 oraociei dll orannzsbb dll oci dll

这三个文件的总大小大约为 MB

要使用 PHP 老版本的 oracle 扩展(在 php ini 中使用 extension=php_oracle dll 启用) 则复制 ociw dll 而非 oci dll

编辑此环境 将 c:\instantclient _ 添加到 PATH 中(位于其他 Oracle 目录之前)

例如 在 Windows 上 依次单击 开始 > 设置 > 控制面板 > 系统 > 高级 > 环境变量 编辑系统变量列表中的 PATH

如果使用了 tnsnames ora 文件定义 Oracle Net 服务名称 则将 tnsnames ora 复制到 c:\instantclient _ 并将用户环境变量 TNS_ADMIN 设置为 c:\instantclient _ 也可以在用户环境变量 LOCAL 中定义默认的服务名称

设置必要的 Oracle 全球化语言环境变量 如 NLS_LANG 如果没有设置 则使用默认的本地环境 有关更多详细信息 请参见 Oracle PHP 应用程序全球化概述

无需设置不必要的 Oracle 变量 如 ORACLE_HOME 和 ORACLE_SID

编辑 php ini 并不要将 OCI 扩展设为注释

extension=php_oci dll

将 extension_dir 指令设置为完整的 PHP 扩展 DLL 路径 在 PHP 中 DLL 位于 PHP 软件的 extensions 子目录中 在 PHP 中 它们位于 ext 中

重新启动 Apache

要检查是否配置了扩展 请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本

使用// URL 将此脚本加载到浏览器中 浏览器页面应包含一个显示 OCI Support enabled 的 oci 部分在 Linux 上启用 PHP OCI 扩展

要在 Linux 上添加 Oracle 连接 需要重新编译 PHP

开放源代码开发人员中心包含有用背景资料的链接 如在 Linux 上安装 Oracle PHP 和 Apache 它介绍了如何安装传统 完整的 Oracle g 版本(Instant Client 不需要此版本)下载并安装 Apache 例如 在您的主目录中安装它

cd apache_ /configure enable module=so prefix=$HOME/apache with port= make make install

编辑 $HOME/apache/conf/并添加

AddType application/x AddType application/x s

下载并解压缩 PHP

从 OTN 上的 Instant Client 页面下载 Basic 和 SDK Instant Client 程序包 这两个 RPM 的总大小大约为 MB

以 root 用户的身份安装 RPM

rpm Uvh oracle instantclient basic i rpm rpm Uvh oracle instantclient devel i rpm

第一个 RPM 将 Oracle 库置于 /usr/lib/oracle/ /client/lib 中 第二个 RPM 在 /usr/include/oracle/ /client 中创建头 (header) 备份此补丁 然后将它应用于 PHP 的 ext/oci /config m 该补丁的行号是基于 PHP 的 如果已修复了 PHP 错误 (很有可能已在 PHP 和 中修复) 则不需要此补丁

如果使用的是 PHP 或 则可以将此补丁保存到一个文件中(如 php_oci ic_buildpatch) 然后使用以下命令安装它

patch u config m php_oci ic_buildpatch

此补丁创建一个新的 PHP 配置参数 with oci instant client[=DIR] 在 Linux 上 默认情况下 它使用从 RPM 中安装的最新版本的 Instant Client 可以指定 Oracle 库所在的目录来使用其他版本 无论在哪种情况下 都将自动使用正确的 SDK 头

新参数与现有的 with oci 参数互斥

例如 在非 Linux 平台上 将 Instant Client 程序包解压缩到您所选择的目录中 with oci instant client 参数将需要明确指定此目录 例如 with oci instant client=/home/instantclient _ 应将 Instant Client SDK 解压缩到与基本程序包相同的目录中 以便修改后的配置脚本可以找到头文件的子目录 在顶层 PHP 目录中重新构建 configure 脚本

cd php rm rf autom te cache config cache /buildconf force

使用新选项运行 configure 此示例使用安装在主目录中的 Apache

/configure \ with oci instant client \ prefix=$HOME/php with apxs=$HOME/apache/bin/apxs \ enable sigchild with config file path=$HOME/apache/conf

重建 PHP

make make install

将 PHP 配置复制到 with config file path 指定的位置

cp php ini remended $HOME/apache/conf/php ini 将 LD_LIBRARY_PATH 设置为 /usr/lib/oracle/ /client/lib 并重新启动 Apache

如果使用了 tnsnames ora 文件定义 Oracle Net 服务名称 则将 TNS_ADMIN 设置为包含此文件的目录

启动 Apache 之前应设置所有 Oracle 环境变量 以下脚本可以帮助完成此操作

#!/bin/sh APACHEHOME=/home/apache LD_LIBRARY_PATH=/usr/lib/oracle/ /client/lib:${LD_LIBRARY_PATH} TNS_ADMIN=/home export LD_LIBRARY_PATH TNS_ADMIN echo Starting Apache $APACHEHOME/apachectl start

要确认是否配置了扩展 请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本

使用类似//localhost: //phpinfo php 的 URL 将此脚本加载到浏览器中 浏览器页面应包含一个显示 OCI Support enabled 的 oci 部分连接到 Oracle

Oracle 连接信息被传递给 OCILogon() 来创建连接 与 Instant Client 关联的工具通常 远离 任何数据库服务器 因此必须将 Oracle Net 连接标识符与用户名和口令一起使用 对于已建立的 Oracle 数据库 连接信息有可能是众所周知的 对于新系统 此信息由 Oracle 安装程序在安装数据库时提供 此安装程序应配置了 Oracle Net 和创建了一个服务名称

在新数据库中 可能需要将演示模式(如 HR 用户)解除锁定并向其提供口令 也可通过在 SQL*Plus 中以 SYSTEM 用户身份连接并执行以下语句来完成此操作

ALTER USER 用户名 IDENTIFIED BY 新口令 ACCOUNT UNLOCK;

将连接信息传递给 PHP 有多种方法 第一个示例使用 Oracle g的 Easy Connect 语法连接到 在 mymachine 上运行的 MYDB 数据库服务中的 HR 模式 不需要 tnsnames ora 或其他 Oracle Neork 文件

$c = OCILogon( hr hr_password //mymachine mydomain/MYDB );

有关 Easy Connect 的语法 请参见 Oracle 的使用 Easy Connect 命名方法文档

或者 如果 /home/tnsnames ora 包含

MYDB = (DESCRIPTION= (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine mydomain)(PORT = )) (CONNECT_DATA= (SERVER = DEDICATED) (SERVICE_NAME = MYDB) ) )

且 TNS_ADMIN 环境变量设置为 /home(在启动 Apache 之前) 则连接字符串可以为

$c = OCILogon( hr hr_password MYDB );

如果环境变量 LOCAL(在 Windows 上)或 O_TASK (在 Linux 上)设置为 MYDB 则可以使用以下代码生成与 MYDB 连接

$c = OCILogon( hr hr_password );使用 Oracle

当基本连接可以使用时 试着运行一个简单的脚本 testoci php 根据您的数据库修改该连接的详细信息并在浏览器中加载它 此示例列出了用户 HR 拥有的所有表

<?php $conn = OCILogon( hr hr_password //mymachine mydomain:port/MYDB); $query = select table_name from user_tables ; $stid = OCIParse($conn $query); OCIExecute($stid OCI_DEFAULT); while ($succ = OCIFetchInto($stid $row)) { foreach ($row as $item) { echo $item ; } echo
\n ; } OCILogoff($conn); ?>故障诊断

Oracle PHP 故障诊断常见问题解答包含有关连接 Oracle 的有用信息

可以从 Instant Client 页面下载 Oracle 的 SQL*Plus 命令行工具来帮助解决环境问题和连接问题 另请参见 SQL*Plus Instant Client 版本说明

检查 SQL*Plus 使用的环境是否与 phpinfo php 显示的环境相同

Windows 帮助

如果 phpinfo php 脚本没有生成显示 OCI Support enabled 的 oci 部分 则确认在 php ini 中没有将 extension=php_oci dll 设为注释

如果 PATH 设置错误 或找不到 Oracle 库 则启动 Apache 将显示警告 在指定的路径中找不到动态链接库 OCI dll phpinfo() 页面的 Environment 部分将显示 PATH 的值以及 PHP 实际使用的 Oracle 变量

如果 php ini 的 extension_dir 指令不正确 则在启动 Apache 将显示警告 PHP 启动 无法加载动态库 php_oci dll

Linux 帮助

仔细检查是否正确修复了 config m 如果 configure 失败 则检查 config log 文件 还原 config m 删除缓存文件 运行 /buildconf force and configure 验证问题是否与所做的更改相关

确保 configure 上的时间戳是当前的 删除所有缓存文件 并在必要时重建它

在启动 Apache 的 shell 中设置所有必要的 Oracle 环境变量结论 lishixinzhi/Article/program/Oracle/201311/17507

分页:123

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值