如何连接Oracle数据库?

时间:2008-09-17 21:17:49

标签: php database oracle macos

如何在MAC OS X上使用PHP连接到Oracle?

5 个答案:

答案 0 :(得分:2)

我认为OCI将是最佳选择。 PHP有一个module

答案 1 :(得分:2)

PDO抽象层可用于连接Oracle DB并对其执行操作。以下是关于如何在Oracle网站上将Oracle与PDO结合使用的article

也可以使用OCI

Oracle PHP Development Centre将提供有关一起使用Oracle和PHP的更多有用信息。

答案 2 :(得分:1)

对于osx 10.6 64bit上的instantclient,请执行以下操作:

下载即时客户端库和sdk,将其全部放在一个文件夹中。如果您使用的是64位计算机,请确保获得64位库,32位无效! - 先用sqlplus测试

如果它不存在则创建

sudo vi /etc/launchd.conf

并将以下内容添加到文件中(使用您自己的路径!)

setenv DYLD_LIBRARY_PATH /usr/oracle_instantClient64

此时你需要重新启动你的系统才能启动,以便将路径传递给apache以获取路径,或者看看是否重启了launchd,尽管我有一种感觉,无论如何都会重启你的系统!

你应该将“extension = oci8.so”添加到php.ini

sudo vi /etc/php.ini

如果该文件不存在,请复制php.ini.default

sudo cp /etc/php.ini.default /etc/php.ini

然后添加上面的扩展名,在文件的下方有一段有很多扩展名的部分,把它放在某个地方

oci需要库符号链接,所以

sudo ln -s $DYLD_LIBRARY_PATH/libclntsh.dylib.10.1 $DYLD_LIBRARY_PATH/libclntsh.dylib

还有oracle二进制文件中的一些奇怪的硬编码库链接,所以修复

mkdir -p /b/227/rdbms/

它只寻找oracle库,所以将它链接回来

ln -s /usr/oracle_instantClient64/ /b/227/rdbms/lib

现在从pear存储库安装oci8。如果你没有升级安装了雪豹osx 10.6,你可能会遇到梨和pecl的问题。如果是这样,您将需要先安装梨。见:https://discussions.apple.com/thread/2602597?start=0&tstart=0

sudo pecl install oci8

提示:不要使用自动检测,请在提示时指定即时客户端路径。

instantclient,/usr/oracle_instantClient64

重启apache

sudo apachectl graceful

通过在浏览器中导航到URL进行测试,或者可以直接在命令行上调用该文件

php index.php

就是这样 使用以下作为测试文件..

<?php 

$dbHost = "localhostOrDatabaseURL";
$dbHostPort="1521";
$dbServiceName = "servicename";
$usr = "username";
$pswd = "password";
$dbConnStr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
            (HOST=".$dbHost.")(PORT=".$dbHostPort."))
            (CONNECT_DATA=(SERVICE_NAME=".$dbServiceName.")))";


if(!$dbConn = oci_connect($usr,$pswd,$dbConnStr)){
$err = oci_error();
trigger_error('Could not establish a connection: ' . $err['message'], E_USER_ERROR);
};

$strSQL = "SELECT SYSDATE FROM DUAL";

$stmt = oci_parse($dbConn,$strSQL);
if ( ! oci_execute($stmt) ){
$err = oci_error($stmt);
trigger_error('Query failed: ' . $err['message'], E_USER_ERROR);
};

while(oci_fetch($stmt)){
    $rslt = oci_result($stmt, 1); print "<h3>query returned: ".$rslt."</h3>";
}
?>

答案 3 :(得分:0)

我不了解Mac,也不了解PHP,但您通常需要安装Oracle客户端工具(Instant Client)。

http://www.oracle.com/technology/tech/oci/instantclient/index.html

安装完成后,修改TNSNAMES.ORA文件以指向Oracle数据库的服务器和实例名称。

然后你可以使用PHP“数据库连接”(抱歉)来创建连接并运行你的SQL语句。

使用SQL * PLUS客户端检查连接是否有效:

c:> SQLPLUS

CONNECT scott/tiger@mydatabase

如果TNSNAMES.ORA是正确的,您应该获得连接,或至少“用户名/密码不正确”,证明您与Oracle实例进行了通信。

如果您收到TNS-12521(?)错误,那么您的TNSNAMES.ORA不正确。

答案 4 :(得分:0)

连接到oracle数据库应该没有oci接口的问题,例如使用“oci_connect()”。

此处有更多例子: http://php.net/manual/en/oci8.setup.php

但我不明白,MAC OS X的含义是什么 - 你是在本地运行apache吗?

希望这有帮助, 巴斯蒂安