系統環境:
請參閱文章 CentOS 5.5 升級至 PHP 5.3
// 下載位址
http://www.oracle.com/technetwork/da...ex-097480.html
注意:檔案約 53.9MB,需要登入帳號才能下載。
// 開始安裝
cd /usr/src rpm -ivh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm rpm -ivh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm
// 安裝 php53-pear 模組
cd /usr/src/redhat/SRPMS/ wget http://dl.iuscommunity.org/pub/ius/archive/Redhat/5.4/SRPMS/php53-pear-1.8.1-5.ius.el5.src.rpm rpmbuild --rebuild php53-pear-1.8.1-5.ius.el5.src.rpm rpm -ivh /usr/src/redhat/RPMS/noarch/php53-pear-1.8.1-5.ius.noarch.rpm
NOTEs:
* 因為此教學是以 PHP 5.3 為例,所以不能使用 yum 安裝 php-pear。
預設的 PHP RPM 安裝並不支援 oci8 及 pdo_oci extension,所以必須重編 PHP,然後再重裝一次。
// 找出現有 PHP 版本的 SRPM,並安裝它
rpm -ivh php53-5.3.5-1.el5.src.rpm
// 修改 php53.spec
/usr/src/redhat/SPECS/php53.spec,找到這幾行
%configure \ --cache-file=../config.cache \ --with-libdir=%{_lib} \ --with-config-file-path=%{_sysconfdir} \ --with-config-file-scan-dir=%{_sysconfdir}/php.d \ --disable-debug \ --with-pic \ --disable-rpath \ --without-pear \ --with-bz2 \ --with-curl \ --with-exec-dir=%{_bindir} \ --with-freetype-dir=%{_prefix} \ --with-png-dir=%{_prefix} \ --enable-gd-native-ttf \ --without-gdbm \ --with-gettext \ --with-gmp \ --with-iconv \ --with-jpeg-dir=%{_prefix} \ --with-openssl \ --with-pspell \ --with-pcre-regex \ --with-libexpat-dir=%{_prefix} \ --with-zlib \ --with-layout=GNU \ --enable-exif \ --enable-ftp \ --enable-magic-quotes \ --enable-sockets \ --enable-sysvsem --enable-sysvshm --enable-sysvmsg \ --enable-wddx \ --with-kerberos \ --enable-ucd-snmp-hack \ --with-unixODBC=shared,%{_prefix} \ --enable-shmop \ --enable-calendar \ --without-sqlite \ --with-libxml-dir=%{_prefix} \ $*
// 加上這兩個參數
--with-oci8=instantclient,/usr/lib/oracle/11.2/client/lib
--with-pdo-oci=shared,instantclient,
/usr,11.2
// 重新編譯
cd /usr/src/redhat/SPECS/ rpmbuild -bb php53.spec
F.A.Q
編譯時遭遇錯誤:make: *** [ext/ldap/ldap.lo] Error 1?
Ans: 請更換為 Oracle Instant Client 10.4.0.2。
pecl install oci8
過程中會出現提示:
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] : 輸入 [Enter]
// 設定 php
cd /etc/php.d vi oci8.ini
oci8.ini:
; Enable oci8 extension module extension=oci8.so
// 檢查 extension_dir 目錄是否有 oci8.so
ls /usr/lib/php/modules/oci8.so
// 設定 Apache
vi /etc/sysconfig/httpd
/etc/sysconfig/httpd: 最下方加上
# For PHP extension oci8, which is used to connect with Oracle DB export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib:$LD_LIBRARY_PATH export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
// 重啟 Apache
service httpd restart
// 以 PECL 方式下載 pdo_oci extension 然後手動編譯
cd /usr/src mkdir PDO_OCI cd PDO_OCI pecl download pdo pecl download pdo_oci tar xzf PDO-1.0.3.tgz tar xzf PDO_OCI-1.0.tgz
//
F.A.Q
執行 pecl 時出現錯誤:FATAL ERROR: Autoconf version 2.50 or higher is required for this script
Ans: 這可能是剛剛有作過 PHP 的升級,執行以下指令可修復:
unset PHP_AUTOCONF