|
|
||||||||||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
||||||||||||
| 安装 PHP 和 Oracle 即时客户端 | ||||||||||||
作者:ourexam 技术文档来源:ourexam 点击数: 更新时间:2005-6-24 ![]() |
||||||||||||
|
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。 软件需求:
在 Windows 上启用 PHP OCI8 扩展 Instant Client 二进制文件是 PHP 的 Windows 预构建二进制文件的补充。
要检查是否配置了扩展,请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本。 <?php phpinfo(); ?> 使用“http://”URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示“OCI8 Support enabled”的“oci8”部分。 在 Linux 上启用 PHP OCI8 扩展要在 Linux 上添加 Oracle 连接,需要重新编译 PHP。 开放源代码开发人员中心包含有用背景资料的链接,如在 Linux 上安装 Oracle、PHP 和 Apache,它介绍了如何安装传统、完整的 Oracle 10g 版本(Instant Client 不需要此版本)。
<?php phpinfo(); ?> 使用类似“http://localhost:8888/<path>/phpinfo.php”的 URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示“OCI8 Support enabled”的“oci8”部分。 连接到 OracleOracle 连接信息被传递给 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 环境变量。 结论希望本文对您能有所帮助。您可以在 OTN Instant Client 或 PHP 论坛上发表问题和建议。 |
||||||||||||
|
|
||||||||||||
| 技术文档录入:admin 责任编辑:admin | ||||||||||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | ||||||||||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 国外公司的Oracle DBA试题 Oracle面试题目及解答应对面 数据库技术考试大纲(中级) Oracle for NT系统实用工具介 Oracle 8 资料库函式库 如何在Oracle中发送Email 如何使用Oracle全文检索功能 Oracle数据字典说明 Oracle初始化参数的来源 Oracle RMAN快速入门指南 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |