知识大全 安装PHP和Oracle10g即时客户端

Posted 版本

篇首语:亦余心之所善兮,虽九死其犹未悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 安装PHP和Oracle10g即时客户端相关的知识,希望对你有一定的参考价值。

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

  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 脚本

  <?php phpinfo(); ?>

  使用// 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 脚本

  <?php phpinfo(); ?>

  使用类似//localhost: /<path>/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 <br>\\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 环境变量

结论 cha138/Article/program/Oracle/201311/17507

相关参考

知识大全 用 Oracle AS 10g 为PHP提供的一次性登录

用OracleAS10g为PHP提供的一次性登录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 在 Linux 上安装 Oracle、PHP 和 Apache

在Linux上安装Oracle、PHP和Apache  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 oracle10g在Solaris10上的安装

oracle10g在Solaris10上的安装  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  修

知识大全 LinuxEnterpriseAS4.0上安装Oracle10G步骤

LinuxEnterpriseAS4.0上安装Oracle10G步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Solaris10下安装Oracle10g

Solaris10下安装Oracle10g  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一系统

知识大全 Oracle 10g学习手册2:安装与构建三(图)

Oracle10g学习手册2:安装与构建三(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 oracle10G在fedora2上的安装

oracle10G在fedora2上的安装  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb

知识大全 在fedora2上安装oracle 10G的方法

在fedora2上安装oracle10G的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  安

知识大全 RedHatas4下ORACLE10g的安装及配置

RedHatas4下ORACLE10g的安装及配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!R

知识大全 在RHAS4下安装oracle10G

在RHAS4下安装oracle10G  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一修改核心参