一:準備工作
首先我們需要準備一些軟件:下面是我目前使用的版本(有些可以不太一樣,但大致配置步驟都沒太大差)
Oracle版本:Oracle 12c (64位),具體安裝版本及過程請參考我的另一篇博客:安裝oracle 12c
WampServer 2.5(64位)(PHP集成環境):可以通過騰訊軟件管家一鍵傻瓜式下載。我在這裏強烈推薦使用該PHP集成環境(打開擴展十分方便,下面會提到),我曾經嘗試使用AppServ,但oracle擴展始終打不開或者打開失敗,仁者見仁,你有更好的方法歡迎留言。
PHP版本:5.5.12
Apache版本:2.4.9
ThinkPHP:3.2.3
------------------------------------------------------------------------
二:配置擴展
1.配置 php.ini 文件:可以通過以下形式快速打開,在大概中間的位置,插入如下配置行extension=php_oci8_12c.dll ; Use with Oracle 12c Instant Client,記得把php_oci8.dll和php_pdo_oci.dll所在行的 “;” (分號)刪掉,表示打開配置。
2.在 “wamp\bin\php\php5.5.12\ext” 目錄下找是否有 “php_oci8.dll” 與“php_oci8_12c.dll”文件,
有:將此文件分別複製到 “C:\Windows\System32” 與 “C:\Windows\SysWOW64” 目錄下
沒有:到官網下載此擴展包:http://pecl.php.net/package/oci8(老規矩,看不懂翻譯,me),如圖,找到對應的PHP版本下載對應的擴展包(如我的PHP版本爲 5.5.12 就選擇 oci8-2.0.12),下載的擴展包中有我們需要的php_oci8.dll與php_oci8_12c.dll文件
3.打開oci8擴展:如圖,打開wamp,選擇PHP->PHP擴展,將php_oci8與php_oci8_12c與php_pdo_oci都打開,然後重啓服務。
完成後在網頁中訪問localhost。這也是我極力推薦wamp的原因,確實我對於配置與擴展來說是個弟弟,能簡單化當然是我的首選。
此時訪問phpinfo.php含有如圖所示:
三:配置ThinkPHP,連接oracle
1.在www目錄下新建個項目,將下載好的TP框架解壓後放進去,然後通過 “localhost/項目名稱” 訪問一下,TP框架會自動爲我們生成一些所需要的目錄。
2.配置config.php,在“wamp\www\demo_3\Application\Home\Conf”目錄下,將其中的配置代碼改爲:
<?php
return array(
//'配置項'=>'配置值'
'DB_TYPE' => 'oracle', // 數據庫類型
'DB_HOST' => 'localhost', // 服務器地址
'DB_NAME' => 'orcl',
'DB_USER' => 'C##fachao', // 用戶名
'DB_PWD' => 'fachao', // 密碼
'DB_PORT' => '1521', // 端口
'DB_CASE_LOWER' => true,
'DB_PREFIX' => '', // 數據庫表前綴
'DB_CHARSET'=> 'utf8',
'DB_SEQUENCE_PREFIX' => 'SEQ_',
'URL_HTML_SUFFIX' => 'php',
//'DB_SEQUENCE_SUFFIX' => '_SEQ',
//'DB_TRIGGER_PREFIX' => 'tig_'
);
說明一下:用戶名爲oracle數據庫用戶,大家可以使用默認的用戶system來登錄,(上例中“C##fachao”爲我後來自己新建的用戶)
如果是跟隨着我上一篇博客安裝的Oracle 12c,則你可以使用 用戶名:system 密碼:Oracle12c
四:測試並輸出oracle表中的數據
1.首先我們需要在oracle中創建個表並插入一些數據,在此我已創建好一張表名爲Students的表,並插入了一條數據(oracle對錶名大小寫並不敏感)(記得開啓oracle服務)
2.編寫控制器 “IndexController.class.php” ,代碼如下:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$conn=oci_connect('C##fachao','fachao','localhost:1521/orcl');
if (!$conn){
$e=oci_error();
print_r($e);
}else{
var_dump($conn);
echo "ok";
}
$dao = D("Students");
var_dump($dao->select());
}
}
3.網頁運行結果:很明顯,我們已經成功了!
五:總結
過程很艱辛,煩過、也想過放棄,但好在最後堅持的下來併成功連接上oracle數據庫,期末作業應該也有着落了。
如果此文章幫助到了你,麻煩給個贊支持一下吧,Q!
也可能文中有部分地方不太準確(畢竟我搗鼓來搗鼓去搗鼓了好久),如你有任何疑問或發現我不合理的地方,歡迎留言。抱拳。