本space搜集和整理各种环境下的Oracle 安装与参数调整和设置技术文章

为Linux和Windows安装PHP和Oracle10g(2)

上一篇 / 下一篇  2008-07-18 16:26:08 / 个人分类:Oracle10g安装

例如:在非 Linux 平台上,将 Instant Client 程序包解压缩到您所选择的目录中。--with-oci8-instant-client 参数将需要明确指定此目录;例如,--with-oci8-instant-client=/home/instantclient10_1。应将 Instant Client SDK 解压缩到与基本程序包相同的目录中,以便修改后的配置脚本可以找到头文件的子目录。

  在顶层 PHP 目录中重新构建“configure”脚本。

  cd php-4.3.9

  rm -rf autom4te.cache config.cache

  ./buildconf --force

  使用新选项运行 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

  重建 PHP。

  make

  make install

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

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

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

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

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

  #!/bin/sh

  APACHEHOME=/home/apache

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

  TNS_ADMIN=/home

  export LD_LIBRARY_PATH TNS_ADMIN

  echo Starting Apache

  $APACHEHOME/apachectl start

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

  <?php

  phpinfo();

  ?>

  使用类似“http://localhost:8888/<path>/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 拥有的所有表:

  <?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 脚本没有生成显示“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 环境变量。


TAG: linux oracle10g php windows 安装

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

我的存档

数据统计

  • 访问量: 6042
  • 日志数: 253
  • 建立时间: 2008-07-08
  • 更新时间: 2008-07-28

RSS订阅

Open Toolbar