今天遇到了一個難題,就是我的Php裡面沒有oci8.so
不能連接Oracle DB.......OMO OMO
爬了很久的文,終於找到解決方法
----------------------------------------------------------------------------------
首先要去Oracle 下載Basic , devel
這次我用的版本是19.6(可以用較低的版本,方法一樣的)
wget https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
然後用 rpm -ivh XXXXX.rpm 安裝,這邊一定要用-ivh 才有辦法安裝~
rpm -ivh oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
安裝後,檢查這個folder有沒有存在
basic: /usr/share/oracle/19.6/client64
devel:/usr/include/oracle/19.6/client64
如果你檢查後都有的話,可以繼續了~
先回到~ , 再修改PATH
cd ~
vim ~/.bashrc
裡面加入這2行
export ORACLE_HOME=/usr/lib/oracle/19.6/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
:wq 存檔後 ldconfig 生效
去下載php 資源包
我用的版本是php7.2.24 (可以用php -v 看php 版本)
前往下載資源包: 點我
下載tar.bz2
wget https://www.php.net/distributions/php-7.2.24.tar.bz2
tar xjf php-7.2.24.tar.bz2
cd php-7.2.24/ext/oci8
因為我只需要用到oci8.so ,所以就轉到oci8 去了,如果你要用pdo_oci 那些,就轉到那邊去
接著下來
phpize
可能這邊會出現以下error:
- The php-devel package is required for use of this command.
- (php7 以上可以用dnf install php-devel /yum install php-devel)
- (php5 的不能直接安裝php-devel ,可以從這裡 找需要的源包 wget 下載後一樣用rpm -ivh 安裝)
成功會出現這個畫面
Configuring for:
PHP Api Version: 20170718
Zend Module Api No: 20170718
Zend Extension Api No: 320170718
./configure
會自動compile 裡面的文件
make
make install
如果你出現oci.h 找不到這文件 ,那你需要在Makefile 加入這行
vim Makefile
....
EXTRA_INCLUDES = -I/usr/include/oracle/19.6/client64
如果成功就可以進行最後一步
make install
就會出現
oci8.so 就出現在上面的Folder裡面,如果不在這裡面,需要把它移到裡面,再php.ini 加入這個.so檔
謝謝大家~~