如何在MAC OS X上使用PHP连接到Oracle?
答案 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吗?
希望这有帮助, 巴斯蒂安