【YashanDB数据库】PHP无法通过ODBC连接到数据库

问题分类】驱动使用

关键字】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

影响范围】所有版本

修复版本】-

posted @   YashanDB  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示