All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
打造Ajax简单相册_[AJAX教程]
SQL表连接方式详解_mssql学习_编程技术
visual c++中制作ActiveX控件的方法
ASP.NET,2.0移动开发之列表控件_[Asp.Net教程]
AJAX技术在PHP开发中的简单应用_[AJAX教程]
变量的变量,PHP,和,你_php资料_编程技术
ASP.NET实例:在vs2005中发送邮件的方法如下:_[Asp.Net教程]
.NET2.0App_Code文件夹的使用_[Asp.Net教程]
PHP实例:用PHP实现多文件上载系统程序_php资料_编程技术
在DataGrid和GridView中对表头设定背景图片_[Asp.Net教程]
Reading number is top 10 pictures
So beauty, will let you spray blood6
避免防盗门的猫眼变成钥匙眼
Fierce chengdu woman, street rape man
NeedWallpaper10
The money of more than 100 countries and regions4
Play for Free show breast in a world of ice and snow
贩卖儿童者必须判死刑
China's first snake village3
The money of more than 100 countries and regions14
A man's favorite things15
Download software ranking
功夫熊猫2(上集)
C#编程思想
C#与.NET技术平台实战演练
Boxer Classic video3
Unix video tutorial3
美女写真2
Take off clothes to survival
Tram sex maniac 2 (H) rar bag10
C#高级编程(第4版)
dreamweaver8中文版
归海一刀 published in(发表于) 2014/2/10 6:51:31 Edit(编辑)
为Linux和Windows安装PHP和Oracle_[PHP教程]

为Linux和Windows安装PHP和Oracle_[PHP教程]

为Linux和Windows安装PHP和Oracle_[PHP教程]

Oracle 10g Instant Client(免费下载)是PHP 与远程 Oracle 数据库连接的最简单方式,它只需要安装三个库。


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


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


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


  软件需求:  
软件
附注
Oracle Instant Client
下载“Instant Client Package - Basic”。在 Linux 上,还应下载“Instant Client Package - SDK”。
Apache HTTPD Server
PHP 界仍推荐 Apache 1.3
PHP — PHP 超文本处理器
4.3 版或更高版本

  在 Windows 上启用 PHP OCI8 扩展

  Instant Client 二进制文件是 PHP 的 Windows 预构建二进制文件的补充。




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


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



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



  3. 创建一个子目录(例如,c:\instantclient10_1),然后从压缩文件中复制以下库:



    • oraociei10.dll
    • orannzsbb10.dll
    • oci.dll

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


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



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


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


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


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


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



  • 编辑 php.ini,并不要将 OCI8 扩展设为注释:

    extension=php_oci8.dll

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



  • 重新启动 Apache。



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


      phpinfo();
      ?>


        使用“http://”URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示 “OCI8 Support enabled”的“oci8”部分。


      在 Linux 上启用 PHP OCI8 扩展

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


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



      1. 下载并安装 Apache。例如,在您的主目录中安装它:
        cd apache_1.3.31./configure --enable-module=so 

        --prefix=HOME/apache

        --with-port=8888makemake install


        编辑 HOME/apache/conf/httpd.conf 并添加:

        AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps


      2. 下载并解压缩 PHP。



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



      4. 以 root 用户的身份安装 RPM。

        rpm -Uvh oracle-instantclient-basic-10.1.0.3

        -1.i386.rpmrpm -Uvh oracle-instantclient-devel

        -10.1.0.3-1.i386.rpm


        第一个 RPM 将 Oracle 库置于 /usr/lib/oracle/10.1.0.3/client/lib 中,第二个 RPM 在 /usr/include/oracle/10.1.0.3/client 中创建头 (header)。


      5. 备份此补丁,然后将它应用于 PHP 的 ext/oci8/config.m4。该补丁的行号是基于 PHP 4.3.9 的。如果已修复了 PHP 错误 31084(很有可能已在 PHP 4.3.11 和 5.0.4 中修复),则不需要此补丁。

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

        patch -u config.m4 php_oci8ic_buildpatch

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


      新参数与现有的 --with-oci8 参数互斥。


      例如:在非 Linux 平台上,将 Instant Client 程序包解压缩到您所选择的目录中。--with-oci8-instant-client 参数将需要明确指定此目录;例如,--with-oci8-instant-client=/home/instantclient10_1。应将 Instant Client SDK 解压缩到与基本程序包相同的目录中,以便薷暮蟮呐渲媒疟究梢哉业酵肺募淖幽柯肌?


    1. 在顶层 PHP 目录中重新构建“configure”脚本。
      cd php-4.3.9rm -rf autom4te.cache config.cache./buildconf --force


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

      ./configure \--with-oci8-instant-client \--prefix=HOME/php 

      --with-apxs=HOME/apache/bin/apxs

      \--enable-sigchild --with-config-file-path=HOME

      /apache/conf



    3. 重建 PHP。

      makemake install


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

      cp php.ini-recommended HOME/apache/conf/php.ini

    5. 将 LD_LIBRARY_PATH 设置为 /usr/lib/oracle/10.1.0.3/client/lib 并重新启动 Apache。

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


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

      #!/bin/shAPACHEHOME=/home/apacheLD_LIBRARY_PATH

      =/usr/lib/oracle/10.1.0.3/client/lib:

      {LD_LIBRARY_PATH}TNS_ADMIN

      =/homeexport LD_LIBRARY_PATH TNS_ADMINecho

      Starting Apache APACHEHOME/apachectl start



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


      phpinfo();
      ?>


        使用类似“http://localhost:8888//phpinfo.php”的 URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示“OCI8 Support enabled”的“oci8”部分。

        连接到 Oracle

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


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


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


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

        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 = 1521))
      (CONNECT_DATA=
      (SERVER = DEDICATED)
      (SERVICE_NAME = MYDB)
      )
      )


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


      c = OCILogon('hr', 'hr_password', 'MYDB');


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


      c = OCILogon('hr', 'hr_password');

        使用 Oracle

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


      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 脚本没有生成显示“OCI8 Support enabled”的“oci8”部分,则确认在 php.ini 中没有将“extension=php_oci8.dll”设为注释。


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


        如果 php.ini 的 extension_dir 指令不正确,则在启动 Apache 将显示警告:“PHP 启动:无法加载动态库 php_oci8.dll。”


        Linux 帮助


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


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


        在启动 Apache 的 shell 中设置所有必要的 Oracle 环境变量。


        结论


        希望本文对您能有所帮助。您可以在 OTN Instant Client 或 PHP 论坛上发表问题和建议。


    6. 作者:Christopher Jones 来源:Oracle





      添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


      Disclaimer Privacy Policy About us Site Map

      If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
      Copyright ©2011-
      uuhomepage.com, Inc. All rights reserved.