在windows 下配置PHP使用ORACLE数据库要点
在window下,经常用apache + PHP 来做应用平台,但是如果使用oracle做后台数据库,但又没有安装有oracle客户端,下面的配置可以参考
1、在没有安装oracle的机器上,PHP无法加载php_oci8.dll模块,原因是php_oci8.dll依赖的相关组件没有找到。
你正确设置了extension_dir = "C:/Apache/php/ext/"
并且打开了 extension=php_oci8.dll
但是查看apache的日志(在logs/error.log中),发现类似的错误
PHP Warning: PHP Startup: Unable to load dynamic library 'C://Apache//php//ext//php_oci8.dll' - /xd5/xd2/xb2/xbb/xb5/xbd/xd6/xb8/xb6/xa8/xb5/xc4/xc4/xa3/xbf/xe9/xa1/xa3/r/n in Unknown on line 0
那就会是上面描述的情况,使用oracle8扩展需要 Oracle 客户端库。Windows 用户需要至少版本号为 10 的库才能使用 php_oci8.dll。
到这个地址下载需要的版本 http://www.oracle.com/technology/tech/oci/instantclient/index.html
不过,下载需要一个注册才可以,如果你已经注册过,那么登录就可以了,你下载后是一个zip包,只需把那个包解压到一个目录中
比如 c:/oracle_client/ 那么,把这个地址加到 path中即可
但是这样还不够,还需要设置 TNS_ADMIN 这个变量,把这个变量的值设置为 tnsnames.ora文件所在的目录即可。
下面是tnsnames.ora的例子
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
下面是一个测试例子
<?php
$connection = oci_connect("hr", "pass","orcl","UTF8");
$query = "SELECT * from user_tables";
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
// 打印执行结果
print '<table border="1">';
while($row = oci_fetch_array($statement, OCI_NUM)) {
print '<tr>';
foreach( $row as $item) {
print '<td>'.$item.'</td>';
}
print '</tr>';
}
print '</table>';
oci_close($connection);
?>
$connection = oci_connect("hr", "pass","orcl","UTF8");
第一个参数: hr 是登录数据库的用户名
pass是密码
orcl是tnsnames.ora中设置的项
utf8是数据库的字符集