首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【YashanDB知识库】PHP无法通过ODBC连接到数据库

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

作者头像
用户10349277
发布2025-02-18 14:25:19
发布2025-02-18 14:25:19
1.8K0
举报
文章被收录于专栏:YashanDB知识库YashanDB知识库

【问题分类】驱动使用

【关键字】ODBC、驱动使用、PHP

【问题描述】

● 应用使用php-fpm+nginx架构,通过php的ODBC拓展连接YashanDB时出现报错:

代码语言:javascript
复制
arduino 代码解读复制代码Shell
[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]部分添加环境文件

代码语言:javascript
复制
ini 代码解读复制代码Shell
EnvironmentFile=/etc/sysconfig/php-fpm

● 在/etc/sysconfig/php-fpm中添加以下内容:

代码语言:javascript
复制
ruby 代码解读复制代码Shell
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服务:

代码语言:javascript
复制
 代码解读复制代码Shell
systemctl daemon-reload
systemctl restart php-fpm

【影响范围】所有版本

【修复版本】-

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档