【YashanDB資料庫】PHP無法透過ODBC連線到資料庫

YashanDB發表於2024-08-08

問題分類】驅動使用

關鍵字】ODBC、驅動使用、PHP

問題描述】應用使用php-fpm+nginx架構,透過php的ODBC擴充連線YashanDB時出現報錯:

[unixODBC][Driver Manager]Can't open lib '/home/yashandb_odbc/libyas_odbc.so': file not found

但是在應用所在的主機上使用isql連線YashanDB資料庫正常,ldd檢查/home/yashandb_odbc/libyas_odbc.so和libyascli.so.0均正常。

問題原因分析】php-fpm和nginx均透過systemctl的方法啟動,該啟動方式不會讀取配置到機器中的環境變數,導致php-fpm的workers程序無法正確獲取到ODBC的驅動檔案

解決/規避方法

方法一:

在/lib/systemd/system/php-fpm.service的[Service]部分新增環境檔案

EnvironmentFile=/etc/sysconfig/php-fpm

在/etc/sysconfig/php-fpm中新增以下內容:

LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/home/yashandb_odbc:/home/yashandb_client/lib
export LD_LIBRARY_PATH
其中/home/yashandb_odbc和/home/yashandb_client/lib是odbc驅動和C驅動lib的資料夾

新增完成後需要重新啟動php-fpm服務:

systemctl daemon-reload
systemctl restart php-fpm

方法二:

在/lib/systemd/system/php-fpm.service的[Service]部分新增環境變數

Environment=LD_LIBRARY_PATH=/usr/lib:/usr/lib64:<實際C驅動資料夾的lib>

新增完成後需要重新啟動php-fpm服務:

systemctl daemon-reload
systemctl restart php-fpm

影響範圍】所有版本

修復版本】-

相關文章