软件 | 注意 |
Oracle Instant Client | 下载"Instant Client Package – Basic”,也需要” Instant Client Package – SDK” |
Apache HTTPD Server | 版本1或2均可 |
PHP - PHP Hypertext Processor | 版本 5.2 |
rpm -Uvh oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm
rpm -Uvh oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm
以上第一个RPM包将Oracle库文件安置在usr/lib/oracle/11.1/client/lib,而第二个在/usr/include/oracle/11.1/client建立头文件。 3. 从 PECL 上下载最新的OCI 8 1.3.5扩展将覆盖PHP 5.2源码中的默认版本。手动下载并如此安装: pecl install oci-1.3.5.tgz 或最新版本可直接如此下载安装: pecl install oci8 输出如下: downloading oci8-1.3.5.tgz ... Starting to download oci8-1.3.5.tgz (137,987 bytes) .....done: 137,987 bytes 10 source files, building running: phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : autodetect 1-1, 'all', 'abort', or Enter to continue:若您安装了Instant Client RPM包,回车后PECL将自动定位RPM包并安装OCI8.so共享库文件。 4. 修改php.ini并确认extension_dir 指向了oci8.so所在目录 并在php.ini中加上: extension=oci8.so,启用oci 8。 5. 将Instant Client(简洁客户端)的目录添加到/etc/ld.so.conf中,或手动设置LD_LIBRARY_PATH包含目录/usr/lib/oracle/11.1/client/lib,并重启Apache。 在重启Apache前要设好Oracle环境变量,如下脚本: #!/bin/sh LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client/lib:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH echo Starting Apache /usr/sbin/apachectl start 以上脚本未设置NLS_LANG等语言环境变量,即使用默认环境。 现在来确认扩展是否正确安装,我们可以通过以下php脚本予以确认: <?php phpinfo(); ?> 自浏览器打开该脚本地址URL,如http://localhost/phpinfo.php,若显示页面出现"oci8”说明配置成功。 下面我们尝试连接Oracle数据库,Oracle授权以及数据库信息会返回给oci_connect()函数以创建连接。一般我们要用到一个tnsname以便远程连接,不懂得话建议你阅读下Oracle的基础文档,除了Net connection identifier(网络连接id 可能是tnsname也可能是easyconnect字符串等)外当然还需要用户名和密码。有好几种方法可以通过PHP连接数据库,下面是其中一个示例使用Oracle的EasyConnect语法的链接标示并要求以HR用户模式登陆名为MYDB的远程数据库: $c = oci_connect('hr', 'hr_password', '//mymachine.mydomain/MYDB'); 您可能需要阅读Oracle Using the Easy Connect Naming Method文档以便了解EasyConnect。 注意在数据库中HR用户可能被锁住了,我们假设你是一位称职的DBA,可以很容易解决这类问题。 开始尝试在PHP上使用Oracle,下面是个简单的示例,你可能需要修改其中连接标示(指'mymachine.mydomain/MYDB'这个)以便连接自己的数据库,示例用以显示HR用户拥有的所有表: <?php $conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/MYDB'); $query = 'select table_name from user_tables'; $stid = oci_parse($conn, $query); oci_execute($stid, OCI_DEFAULT); while ($row = oci_fetch_array($stid, OCI_ASSOC)) { foreach ($row as $item) { echo $item." "; } echo "<br>\n"; } oci_free_statement($stid); oci_close($conn); ?> 问题: 检查Apache错误日志文件,避免可能发生的启动错误。 零时打开display_error=on选项以显示脚本中的问题,这需要在php.ini中加入” display_error=on”。 用SQL*PLUS检测可能的环境问题等。 结语 安装Oracle简洁客户端以及OCI 8扩展十分简便,各组件安装和更新也很容易。 未来PHP 5.3将默认包含OCI 8 1.3版扩展。
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1276844