Linux下PHP7.2擴展


前言

    由於公司某項目需要連接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包安裝上了.

參考文獻:

     https://www.jianshu.com/p/664bff2cbae6#fn2 

     https://www.jianshu.com/p/3628374e9f91


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM