在我们用来开发网站的电脑上已经安装有PHP环境,我们想使用php来连接一个oracle数据库。但是用thinkphp连接oracle,报错:系统不支持oracle。
如果你看不到这个错误,可以在你的入口文件加一行:
define('APP_DEBUG', true);
以开启thinkphp的调试功能。
这时,我们可以写一个简单的php程序oracle.php,不使用thinkphp框架,测试一下能否连接oracle:
$conn=oci_connect($user,$pass,$db,"zhs16gbk");
if($conn)
{
echo "Oracle connect successfully!
";
$q1="-------------";
$stat=oci_parse($conn,$q1);
oci_execute($stat);
}
?>
运行此php程序,发现报错:
Fatal error: Call to undefined function oci_connect() in oracle.php on line 2
于是我们知道了:本机php开发环境不支持连接oracle。
打开php.ini,开启以下两行:
extension=php_oci8.dll
extension=php_openssl.dll
重新启动apache,再运行oracle.php,发现还是报同样的错误。
下面我们使用Instant Client来解决问题:
下载Instant Client,下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 直接下载链接:
http://download.oracle.com/otn/nt/instantclient/112030/instantclient-basic-nt-11.2.0.3.0.zip
下载后,解压到D盘, D:\instantclient_11_2
将D:\instantclient_11_2 中的所有dll文件拷贝到c:\windows\system32目录下。
将D:\instantclient_11_2 添加到环境变量的path中:
在“我的电脑”上点右键,选择“属性”,点“高级”,点“环境变量”,编辑“系统变量”中的“Path”,将"D:\instantclient_11_2"放在变量值中的最前面。然后点“确定”。
然后重新启动Apache。
使用以下php代码查看php相关信息:
phpinfo();
?>
在显示的页面上搜索"oci8",你会发现有一行:
OCI8 Supportenabled
这就表明PHP已经可以连接oracle了。
然后你就可以用上面的oracle.php连接oracle试试了。如果连接成功,你就可以用thinkphp来连接oracle了。
thinkphp中连接oracle的相关配置(config.php):
return array(
'URL_MODEL'=>1, //如果你的环境不支持PATHINFO 请设置为3
'DB_TYPE'=>'Oracle', //数据库类型
//'DB_HOST'=>'localhost',
//'DB_NAME'=>'web', //数据库名
'DB_NAME'=>'localhost:1521/service_name',
'DB_USER'=>'web', //用户名
'DB_PWD'=>'web', //密码
//'DB_PORT'=>'1521', //端口
'DB_PREFIX'=>'', //数据库表前缀
);
?>