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

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

Paste_Image.png

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

使用yum安裝雖然方便,但這取決于源的版本,有些源若版本較低會(huì)出現(xiàn)PHP在支持?jǐn)?shù)據(jù)庫(kù)驅(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 庫(kù)放在 /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并使用以下語(yǔ)句
    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è)簡(jiǎn)單的 PHP 腳本 phpinfo.php

<?php
  phpinfo();
?>

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

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

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

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

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

使用 PHP OCI8 和 Oracle

試用簡(jiǎn)單的腳本 testoci.php
修改連接憑證以滿足您的數(shù)據(jù)庫(kù)要求,并將其加載到瀏覽器中。此示例列出了用戶 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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容