前言
由於公司某項目需要連接oracle數據庫,該項目使用的開發語言為PHP,故需要對PHP進行擴展
環境說明
服務器:Centos7
PHP:7.2, 源碼安裝;安裝路徑:/usr/local/xxx/php-7.2
擴展過程
前期准備
下載oracle所需客戶端,我這里使用的是zip包.
下載后存放到某路徑下,我這里為/data/soft目錄下
注意,php7版本的某些擴展已經集合到php的源碼中,我們可以直接對php的源碼進行重新編譯,而不需要再下載所謂的其他軟件包
如果php在安裝完后刪除了,需要去官網找尋對應的版本下載並解壓,我這里用的是7.2.11的
安裝oracle的客戶端
解壓instantclient-basic-linux.x64-12.2.0.1.0.zip,並移動到/usr/lib/目錄下
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip mv instantclient_12_2/ /usr/lib
解壓instantclient-sdk-linux.x64-12.2.0.1.0.zip,將解壓后的instantclient_12_2目錄下sdk目錄移動到/usr/lib/instantclient_12_2/下
unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip cp -rf instantclient_12_2/sdk/ /usr/lib/instantclient_12_2/
配置環境變量
vim ~/.bash_profile
export ORACLE_HOME=/usr/lib/instantclient_12_2 export LD_LIBRARY_PATH=/usr/lib/instantclient_12_2 export PATH=$ORACLE_HOME:$LD_LIBRARY_PATH:$PATH
source ~/.bash_profile //查看環境變量,檢驗配置是否正確 echo $PATH
創建軟連接
進入oracle目錄
cd /usr/lib/instantclient_12_2 ln -s libclntsh.so.12.1 libclntsh.so ln -s libclntshcore.so.12.1 libclntshcore.so 注意 libclntsh.so.12.1 根據下載版本不同而不同。如在 Oracle11.* 的版本則為 libclntsh.so.11.1。 而且該鏈接必須配置,否則在以下的 configure 配置步驟將會報錯而導致配置失敗。
編譯擴展oci8
cd /data/soft/php-7.2.11/ext/oci8 //執行phpize /usr/local/xxx/php-7.2/bin/phpize //生成configure文件后執行configure ./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-oci8=shared,instantclient,/usr/lib/instantclient_12_2 //編輯過程中如果有問題就解決問題,如果沒有繼續執行 make && make install
將生成的oci8.so 添加到php.ini
vim /usr/local/xxx/php-7.2/lib/php.ini
重啟php查看擴展是否添加
systemctl restart php-fpm7
/usr/local/xxx/php-7.2/bin/php -m
如果添加擴展后執行php -m 報錯則使用第二方法
報錯信息如下 libaio.so.1: cannot open shared object file: No such file or director 解決 yum install libaio /usr/local/xxx/php-7.2.11/bin/pecl install oci8 之后輸入如下安裝即可. instantclient,/usr/lib/instantclient_12_2/ 然后重啟php
編譯擴展pdo_oci
cd /data/soft/php-7.2.11/ext/pdo_oci //執行phpize /usr/local/xxx/php-7.2/bin/phpize //生成configure文件后執行configure ./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-pdo-oci=instantclient,/usr/lib/instantclient_12_2 //編輯過程中如果有問題就解決問題,如果沒有繼續執行 make && make install
將生成的pdo_oci.so 添加到php.ini
vim /usr/local/xxx/php-7.2/lib/php.ini
重啟php查看擴展是否添加
systemctl restart php-fpm7
/usr/local/xxx/php-7.2/bin/php -m
總結
在進行php擴展的過程中,走了很多的坑,前前后后忙活了大約一天多的時間,總算是處理好了.
前期看各種博客,發現很多是類似的,都無法實現.上面說有用rpm,有用zip包的,
也有使用的版本為11.2的,也有12.2的.經過自己不斷的摸索,加上網上的文章
后來終於使用12.2版本的zip包安裝上了.