如何连接Oracle数据库?

4

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

5个回答

2

我认为OCI是可行的方案。PHP有一个相关模块


2
PDO抽象层可用于连接Oracle数据库并执行操作。以下是来自Oracle网站的一篇文章,介绍如何使用PDO与Oracle:article
还可以使用OCIOracle PHP Development Centre将提供更多有关在PHP中使用Oracle的有用信息。

1

针对OSX 10.6 64位的instantclient,请执行以下操作:

下载instant client库和SDK,并将其全部放入一个文件夹中。如果您使用的是64位机器,则一定要获取64位库,32位库不起作用! - 首先通过sqlplus进行测试

如不存在,则创建此文件

sudo vi /etc/launchd.conf

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

setenv DYLD_LIBRARY_PATH /usr/oracle_instantClient64

在这一点上,您可能需要重新启动系统,以便launchd传递路径给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而没有升级,您可能会遇到pear和pecl的问题。如果是这样,您需要先安装pear。请参见:https://discussions.apple.com/thread/2602597?start=0&tstart=0

sudo pecl install oci8

提示:不要使用自动检测,在被询问时指定instantclient路径。
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>";
}
?>

0

我不熟悉Mac和PHP,但通常需要安装Oracle客户端工具(即时客户端)。

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不正确。

0

使用 oci-interface 连接 Oracle 数据库应该不成问题,例如使用 "oci_connect()"。

这里有更多的例子: http://php.net/manual/en/oci8.setup.php

但是我不理解备注中 MAC OS X 是什么意思 - 你在本地运行 Apache 吗?

希望对您有所帮助, 巴斯蒂安


那将是苹果的操作系统10(Mac OS X)。 - nick fox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接