近期因資安議題而進行Oracle Linux的線上更新,更新完畢立即出現PHP無法連接Oracle資料庫的狀況,並出現了「PHP Warning: PHP Startup: Unable to load dynamic library ‘oci8.so’ (tried: /usr/lib64/php/modules/oci8.so」告警,今天小編要來分享如何排除這個問題。
[範例情境]
作業系統:Oracle Linux 7.9
程式語言:PHP 7.4.28-1.0.3
連接資料庫元件:php-oci8
[排除步驟]
01、檢視PHP出現的錯誤訊息
出現了「tried: /usr/lib64/php/modules/oci8.so」
02、檢測缺少了那些相依的檔案
語法:
ldd /usr/lib64/php/modules/oci8.so
補充說明:
訊息顯示缺少「libclntsh.so.21.1」元件,該元件是「oracle-instantclient-basic」套件的元件。
03、下載oracle-instantclient-basic套件
Oracle官方下載頁面:
https://www.oracle.com/tw/database/technologies/instant-client/linux-x86-64-downloads.html
linux 文字模式下載檔案語法:
wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-basic-21.5.0.0.0-1.x86_64.rpm
04、移除舊版套件
語法:
yum remove oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64
05、安裝新版套件
語法:
yum install oracle-instantclient-basic-21.5.0.0.0-1.x86_64.rpm
06、再次檢查相依的檔案是否還有缺少
語法:
ldd /usr/lib64/php/modules/oci8.so
補充說明:
libclntsh.so.21.1元件已可以順利被搜尋到