centos6下PHP+oracle環(huán)境部署

公司PHP測試服務(wù)器出現(xiàn)宕機(jī)枢里,運(yùn)維同事早先沒有做鏡像備份,硬盤也沒法回復(fù)狡赐,只能重新搭建新的測試環(huán)境。作為一個(gè)PHP門外漢扶关,開始了PHP環(huán)境搭建之旅阴汇。

Paste_Image.png

PHP應(yīng)用服務(wù)器部署(源碼安裝)

使用yum安裝雖然方便,但這取決于源的版本节槐,有些源若版本較低會(huì)出現(xiàn)PHP在支持?jǐn)?shù)據(jù)庫驅(qū)動(dòng)方面支持不足搀庶,特此選擇用源碼安裝。

  1. 下載PHP源碼

2.編譯和安裝PHP源碼
tar -zxvf php-5.5.38.tar.gz
cd php-src-php-5.5.38
./buildconf --force
配置相關(guān)參數(shù)
/configure --enable-fpm --enable-mbstring --with-mysql --with-mcrypt --enable-inline-optimization —disable-debug
./configure --enable-fpm --enable-mbstring --with-mysql --with-mcrypt --enable-inline-optimization --disable-debug
make
make install
cp ~/php-src-php-5.5.32/php.ini-production /usr/local/lib/php.ini

編譯過程要求依賴相關(guān)包铜异,比如gcc哥倔,autoconf等,根據(jù)提示使用 yum安裝對(duì)應(yīng)依賴包

3.配置PHP-FPM服務(wù)

  • PHP-FPM啟動(dòng)文件
    cp ~/php-src-php-5.5.32/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  • 授權(quán)
    chmod 775 /etc/init.d/php-fpm
  • PHP-FPM配置文件
    cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

oracle客戶端安裝

  1. 下載
  1. 安裝
    rpm –ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
    rpm –ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
    rpm –ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

第一個(gè) RPM 將 Oracle 庫放在 /usr/lib/oracle/11.2/client64/lib
中咆蒿,第二個(gè) RPM 在/usr/include/oracle/11.2/client64
中創(chuàng)建頭

oracle驅(qū)動(dòng)oci8安裝

oci8為PHP連接oracle的驅(qū)動(dòng),必不可少蚂子。

  1. 下載
  1. 安裝
    tar -xzf oci8-1.4.7.tgz
    cd oci8-1.4.7
    phpize
    ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib
    make install
  2. 啟用 OCI8 擴(kuò)展
    編輯 php.ini并使用以下語句
    extension=oci8.so

如果指定extension_dir路徑指向 oci8.so文件的安裝目錄沃测,則可直接如上配置,否則指定決定路徑

  1. LD_LIBRARY_PATH設(shè)置
    設(shè)置環(huán)境變量食茎,在配置文件/etc/profile或~/base_profile添加
    /usr/lib/oracle/11.2/client64/lib

啟動(dòng)PHP

service php-fpm start

驗(yàn)證已安裝 PHP OCI8 擴(kuò)展

檢查 OCI8 配置蒂破,創(chuàng)建一個(gè)簡單的 PHP 腳本 phpinfo.php

<?php
  phpinfo();
?>

使用相應(yīng)的 URL(例如 http://localhost/phpinfo.php
)將此腳本加載到瀏覽器中。瀏覽器頁面將包含“oci8”部分别渔,其中顯示“OCI8 Support enabled”并列出可以配置的 OCI8 選項(xiàng).

連接到 Oracle 數(shù)據(jù)庫

要?jiǎng)?chuàng)建連接附迷,傳遞 Oracle 用戶名和口令憑證作為 oci_connect()
的兩個(gè)參數(shù)。Oracle 數(shù)據(jù)庫名稱連接標(biāo)識(shí)符必須用于第三個(gè)參數(shù)哎媚,因?yàn)榕c Instant Client 鏈接的程序始終被視為“遠(yuǎn)離”任何數(shù)據(jù)庫服務(wù)器喇伯,并需要向這些程序告知要連接到的數(shù)據(jù)庫實(shí)例。對(duì)于已建立的 Oracle 數(shù)據(jù)庫拨与,連接字符串可能是眾所周知的稻据。對(duì)于新系統(tǒng),此信息由 Oracle 安裝程序在安裝數(shù)據(jù)庫時(shí)提供买喧。安裝程序應(yīng)該已經(jīng)為您配置 Oracle 網(wǎng)絡(luò)并創(chuàng)建服務(wù)名稱捻悯,如 orcl箩朴。

將連接信息傳遞給 PHP 有多種方法。此示例使用 Oracle 的簡單連接語法連接到在 mymachine 上運(yùn)行的 orcl 數(shù)據(jù)庫服務(wù)中的 HR 模式秋度。不需要 tnsnames.ora
或其他 Oracle 網(wǎng)絡(luò)文件:
$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/orcl');

有關(guān)簡單連接語法,請(qǐng)參見 Oracle 的使用簡單連接命名方法文檔钱床。
在新數(shù)據(jù)庫中荚斯,需要解除對(duì) HR 用戶等演示模式的鎖定并為其提供口令。也可通過在 SQL*Plus 中以 SYSTEM 用戶身份連接并執(zhí)行以下語句來完成此操作:ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;

使用 PHP OCI8 和 Oracle

試用簡單的腳本 testoci.php
修改連接憑證以滿足您的數(shù)據(jù)庫要求查牌,并將其加載到瀏覽器中事期。此示例列出了用戶 HR 擁有的所有表:

<?php
  $conn = oci_connect('hr', 'hr_password',  'mymachine.mydomain/orcl');
  $stid = oci_parse($conn, 'select table_name from user_tables');
   oci_execute($stid);
    echo "<table>\n";
    while (($row = oci_fetch_array($stid,OCI_ASSOC+OCI_RETURN_NULLS)) != false) { 
    echo "<tr>\n"; 
    foreach ($row as $item) { 
      echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n"; 
    } 
    echo "</tr>\n";
  }
  echo "</table>\n";
?>```
>注意:需要在/etc/hosts中添加`127.0.0.1 主機(jī)名`,在PHP連接oracle中默認(rèn)會(huì)根據(jù)主機(jī)名去訪問纸颜,否則會(huì)遇到“ORA-24408: could not generate unique server group name
”錯(cuò)誤兽泣。[stackoverflow傳送門](http://stackoverflow.com/questions/10484231/ora-24408-could-not-generate-unique-server-group-name)

本以為是否配置host不會(huì)影響PHP連接oracle,結(jié)果轉(zhuǎn)了一圈花了幾個(gè)小時(shí)時(shí)間發(fā)現(xiàn)只要配置host就解決問題胁孙,害的兩次重新安裝PHP唠倦,浪費(fèi)大量時(shí)間,以此紀(jì)念涮较。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稠鼻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狂票,更是在濱河造成了極大的恐慌候齿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闺属,死亡現(xiàn)場離奇詭異慌盯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掂器,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門亚皂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唉匾,你說我怎么就攤上這事孕讳。” “怎么了巍膘?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵厂财,是天一觀的道長。 經(jīng)常有香客問我峡懈,道長璃饱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任肪康,我火速辦了婚禮荚恶,結(jié)果婚禮上撩穿,老公的妹妹穿的比我還像新娘。我一直安慰自己谒撼,他們只是感情好食寡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著廓潜,像睡著了一般抵皱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辩蛋,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天呻畸,我揣著相機(jī)與錄音,去河邊找鬼悼院。 笑死伤为,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的据途。 我是一名探鬼主播绞愚,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颖医!你這毒婦竟也來了爽醋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤便脊,失蹤者是張志新(化名)和其女友劉穎蚂四,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哪痰,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遂赠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晌杰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷睦。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肋演,靈堂內(nèi)的尸體忽然破棺而出抑诸,到底是詐尸還是另有隱情,我是刑警寧澤爹殊,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布蜕乡,位于F島的核電站,受9級(jí)特大地震影響梗夸,放射性物質(zhì)發(fā)生泄漏层玲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辛块。 院中可真熱鬧畔派,春花似錦、人聲如沸润绵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尘盼。三九已至士嚎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悔叽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工爵嗅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娇澎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓睹晒,卻偏偏與公主長得像趟庄,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伪很,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容