ComError.com » ความรู้ไอที » วิธีตั้งค่า PHP ให้ใช้งาน Database ของ Oracle โดยใช้ OCI8 [สำหรับ Mac OSX]

วิธีตั้งค่า PHP ให้ใช้งาน Database ของ Oracle โดยใช้ OCI8 [สำหรับ Mac OSX]

ก่อนอื่นสิ่งที่ต้องติดตั้งก่อนลง PHP OCI8 install

  • Xcode Command Line Tools
  • PEAR และ PECL
  • BREW

ขั้นตอนการติดตั้ง oci8 osx

  • ดาวน์โหลด SQL Oracle 3 Packages เพื่อเตรียมนำมาติดตั้งจาก Download Oracle Instant Client
    หมายเหตุ ตรวจดูระบบปฏิบัติการ 32 bit หรือ 64 bit ก่อนดาวน์โหลดไฟล์ ส่วนใหญ่เครื่อง Mac หลังปี 2007 จะเป็น 64 บิต
    ดาวน์โหลดดังนี้

    Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
    instantclient-basic-macos.x64-12.1.0.2.0.zip (63,590,812 bytes)
    Instant Client Package - SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client
    instantclient-sqlplus-macos.x64-12.1.0.2.0.zip (871,809 bytes)
    Instant Client Package - SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client
    instantclient-sdk-macos.x64-12.1.0.2.0.zip (664,112 bytes)

  • สร้างโฟลเดอร์ /opt/oracle/instantclient_12_1/ สำหรับ unzip ไฟล์ที่ดาวน์โหลดมา โดยใช้คำสั่งผ่าน Terminal หรือสร้างโฟลเดอร์ขึ้นเองก็ได้

    คำสั่งสร้างโฟลเดอร์

    sudo mkdir /opt
    sudo mkdir /opt/oracle

    สำหรับ unzip ไฟล์ไปยังโฟลเดอร์ โดยใช้ Terminal ให้พิมพ์คำสั่งข้างล่าง ใน Directory ที่เก็บไฟล์ที่ดาวน์โหลดมา ตัวอย่างการเข้ายัง Directory ที่เก็บไฟล์ที่ดาวน์โหลดมา cd ~/Downloads/

    sudo unzip -d /opt/oracle/ instantclient-basic-macos.x64-12.1.0.2.0.zip
    sudo unzip -d /opt/oracle/ instantclient-sdk-macos.x64-12.1.0.2.0.zip
    sudo unzip -d /opt/oracle/ instantclient-sqlplus-macos.x64-12.1.0.2.0.zip

  • แก้ไขไฟล์ .bash_profile ที่ Home Directory

    คำสั่ง nano สำหรับเปิดไฟล์เพื่อแก้ไข

    sudo nano ~/.bash_profile

    เพิ่มโค้ดในไฟล์ .bash_profile ตามนี้

    export ORACLE_HOME=/opt/oracle/instantclient_12_1
    export DYLD_LIBRARY_PATH=/opt/oracle/instantclient_12_1
    export PATH=$PATH:$DYLD_LIBRARY_PATH
    export SQL_PATH=$ORACLE_HOME
    export PATH=$PATH:$ORACLE_HOME
    export NLS_LANG= “ENGLISH_UNITED KINGDOM.UTF8”

    กด ctrl + x เพื่อออกจากการแก้ไขไฟล์ ตอบ yes เพื่อทำการบันทึก

    เมื่อบันทึกสำเร็จให้พิมพ์คำสั่ง

    source ~/.bash_profile

  • ทำการเชื่อมโยง Lib

    ไปยัง directory /opt/oracle/instantclient_12_1/

    cd /opt/oracle/instantclient_12_1/

    เพิ่มคำสั่ง

    ln -sf libclntsh.dylib.12.1 libclntsh.dylib
    ln -sf libocci.dylib.12.1 libocci.dylib

  • เริ่มทำการติดตั้ง OCI8

    ติดตั้ง autoconf

    brew install autoconf

    ถ้าเคยติดตั้ง OCI8 แล้ว ให้ Uninstall ก่อน แล้วค่อยติดตั้งใหม่อีกครั้ง

    sudo pecl uninstall oci8

    Install OCI8

    sudo pecl install oci8

    หรือ (-f คือการ rebuild)

    sudo pecl install -f oci8

    PECL จะถามที่อยู่ของ ORACLE_HOME

    Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

    ให้พิมพ์ directory ที่ unzip Oracle Instant Client

    instantclient,/opt/oracle/instantclient_12_1

    ถ้าติดตั้งเสร็จสมบูรณ์จะแสดง

    Build process completed successfully
    Installing '/usr/lib/php/extensions/no-debug-non-zts-XXXXxxXX/oci8.so'
    install ok: channel://pecl.php.net/oci8-X.X.X
    configuration option "php_ini" is not set to php.ini location
    You should add "extension=oci8.so" to php.ini

  • แก้ไขไฟล์ Apache org.apache.httpd.plist

    cd /System/Library/LaunchDaemons
    sudo nano org.apache.httpd.plist

    เพิ่มโค้ดในไฟล์ org.apache.httpd.plist ตามโค้ดที่ไฮไลท์

    <dict>
    <key>XPC_SERVICES_UNAVAILABLE</key>
    <string>1</string>
    <key>DYLD_LIBRARY_PATH</key>
    <string>/opt/oracle/instantclient_12_1</string>
    </dict>

  • แก้ไขไฟล์ php.ini

    ถ้ายังไม่เคยแก้ไขไฟล์ php.ini ในสร้างไฟล์ php.ini โดย copy ไฟล์จาก default php.ini

    cd /etc
    sudo cp php.ini.default php.ini

    เพิ่ม extension=oci8.so ใน /ect/php.ini โดยให้เพิ่มหลังจากคำ Dynamic Extensions เมื่อเพิ่มเสร็จสิ้นให้ทำการบันทึกแล้ว restart apache โดยใช้คำสั่ง

    sudo apachectl restart

  • ตรวจสอบสถานะ OCI8

    โดยใช้คำสั่ง

    php --ri oci8

    ถ้าทำการติดตั้งอย่างสมบูรณ์จะแสดงผลดังนี้

    OCI8 Support => enabled
    OCI8 DTrace Support => disabled
    OCI8 Version => 2.0.8
    Revision => $Id: f04114d4d62cffes4cdc2ed3b7f22f9c2c3a5016 $
    Oracle Run-time Client Library Version => 12.1.0.2.0
    Oracle Compile-time Instant Client Version => 12.1

    Directive => Local Value => Master Value
    oci8.max_persistent => -1 => -1
    oci8.persistent_timeout => -1 => -1
    oci8.ping_interval => 60 => 60
    oci8.privileged_connect => Off => Off
    oci8.statement_cache_size => 20 => 20
    oci8.default_prefetch => 100 => 100
    oci8.old_oci_close_semantics => Off => Off
    oci8.connection_class => no value => no value
    oci8.events => Off => Off

คำที่เกี่ยวข้อง

พูดอะไรเกี่ยวกับบทความนี้

หมวดหมู่ยอดนิยม