若未安裝 PHP,可通過 yum 快速部署:
yum install php php-pdo yum install php-devel php-pear php-fpm php-gd php-ldap php-mbstring php-xml php-xmlrpc php-zlib zlib-devel bc libaio glibc
Instant Client 是輕量級的 Oracle 客戶端,無需安裝完整的 500MB 客戶端即可連接數據庫。從 Oracle 官網下載對應版本的 Basic 和 Devel 兩個 RPM 包。
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
64 位系統需創建 32 位兼容鏈接,否則後續編譯會報錯:
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
vi /etc/profile.d/oracle.sh export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib
執行 source /etc/profile.d/oracle.sh 使其生效。
從 PECL 下載源碼並修改配置以支持 Oracle 11.2:
wget https://pecl.php.net/get/PDO_OCI-1.0.tgz tar -xvf PDO_OCI-1.0.tgz cd PDO_OCI-1.0
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then PDO_OCI_VERSION=11.2
11.2) PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) ;;
phpize ./configure --with-pdo-oci=instantclient,/usr,11.2 make && sudo make install
安裝完成後會在 /usr/lib64/php/modules/pdo_oci.so 生成模塊文件。
echo "extension=pdo_oci.so" > /etc/php.d/pdo_oci.ini php -i | grep oci # 輸出應包含:PDO drivers => oci, sqlite
wget https://pecl.php.net/get/oci8-2.0.8.tgz tar -xvf oci8-2.0.8.tgz cd oci8-2.0.8 phpize ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib make && make install
echo "extension=oci8.so" > /etc/php.d/oci8.ini php -i | grep oci8 # 驗證安裝成功
在 Web 目錄創建 testoci.php:
<?php
$conn = oci_connect('username', 'password', '172.29.88.178/DBTEST');
$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";
?>
重啟 Apache 後訪問該頁面,若正常顯示表列表則配置成功。
LD_LIBRARY_PATH 及軟鏈接是否正確。