扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
要确认是否配置了扩展,请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本。
<?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 拥有的所有表: Oracle PHP 故障诊断常见问题解答包含有关连接 Oracle 的有用信息。 可以从 Instant Client 页面下载 Oracle 的 SQL*Plus 命令行工具来帮助解决环境问题和连接问题。另请参见 SQL*Plus Instant Client 版本说明。 检查 SQL*Plus 使用的环境是否与 phpinfo.php 显示的环境相同。 <?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);
?>
故障诊断
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 论坛上发表问题和建议。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者