如何在MAC OS X上使用PHP连接Oracle?
针对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
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,/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>";
}
?>
我不熟悉Mac和PHP,但通常需要安装Oracle客户端工具(即时客户端)。
http://www.oracle.com/technology/tech/oci/instantclient/index.html
一旦安装完成,您需要修改TNSNAMES.ORA文件,将其指向Oracle数据库服务器和实例名称。c:> SQLPLUS
CONNECT scott/tiger@mydatabase
使用 oci-interface 连接 Oracle 数据库应该不成问题,例如使用 "oci_connect()"。
这里有更多的例子: http://php.net/manual/en/oci8.setup.php
但是我不理解备注中 MAC OS X 是什么意思 - 你在本地运行 Apache 吗?
希望对您有所帮助, 巴斯蒂安