環境: CentOS 7 x64 + PHP 5.6 + httpd (都用 yum 直接取得)

步驟:

#
# 安裝 Oracle Instant Client:
# 從 Oracle 下載 oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm, oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
#

rpm -Uvh oracle-*12.1-*.rpm

#
# 安裝其他套件
#

yum -y install gcc
yum -y install prelink

#
# 安裝 oci8
出現要提供 ORACLE_HOME 的提示時, 直接按 enter 跳過
#

pecl install oci8-2.0.10
chmod +x /usr/lib64/php/modules/oci8.so

#
# 設定 php 載入 oci8.so
#

cat << EOF > /etc/php.d/oci8.ini
extension=oci8.so
EOF

#
# 設定執行與連線權限
#

setsebool -P httpd_can_network_connect=1
execstack -c /usr/lib64/php/modules/oci8.so
execstack -c /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1

#
# 重開 httpd
#

systemctl restart httpd

#
# 測試一: phpinfo
# 流覽後看 OCI8 Support 是否存在, 且值為 Enable
#

cat << EOF > /var/www/html/phpinfo.php
<?php
    phpinfo();
?>
EOF

#
# 測試二: connect
# 連線資料庫
#

cat << EOF > /var/www/html/connect.php
<?php
    putenv('NLS_LANG=AMERICAN_AMERICA.UTF8'); // 避免中文亂碼
    \$conn = oci_connect('oracle帳號', 'oracle密碼', 'oracle主機/SID');
    \$sql = 'select count(*) TOTAL from user_objects';
    \$stmt = oci_parse(\$conn, \$sql);
    oci_execute(\$stmt);
    \$row = oci_fetch_array(\$stmt, OCI_ASSOC+OCI_RETURN_NULLS);
    if (\$row == FALSE) {
        echo 'NO DATA';
    } else {
        echo 'COUNT='.\$row['TOTAL'];
    }
    oci_close(\$conn);
?>
EOF

 

創作者介紹

Egg Chang 的部落格

Egg Chang 發表在 痞客邦 PIXNET 留言(0) 人氣()