YashanDB|Ubuntu 加载 C 驱动后 PHP 启动失败? 原来是“库冲突”惹的祸
在 Ubuntu 系统中配置 YashanDB 数据库时,一些开发者会将 C 驱动路径加入 LD_LIBRARY_PATH,以支持 PHP、Python 等语言通过 C 接口连接数据库。但在实际操作中,有用户反馈:
“一加完路径 PHP 就启动不了,提示 pcre 模块错误!”


一、问题现象
在 Ubuntu 系统下,当将 YashanDB 提供的 C 驱动库路径加入环境变量后,执行 PHP 时报如下错误:
复制代码

二、问题原因分析
此问题根源是 系统内置库与驱动依赖库发生冲突,具体如下:
YashanDB 的 C 驱动依赖 libpcre2-8.so
驱动包内自带了该库版本,放在 lib 目录下;
该版本为新版本的 PCRE2.
Ubuntu 系统自带的是 pcre3(较老版本)
PHP 本身依赖系统的 pcre3;
当环境变量中 LD_LIBRARY_PATH 优先搜索 YashanDB 驱动路径时,PHP 会错误加载了不兼容的 PCRE2;
导致 PHP 启动失败,报错如上。
三、解决方案
调整环境变量中库搜索顺序
修改 LD_LIBRARY_PATH,将系统默认的库路径放在最前面,如下所示:
复制代码
注意事项:
/lib, /usr/lib 等系统路径必须写在前面;
这样可以保证 PHP 启动时先加载系统原生的 libpcre 版本,避免冲突;
不建议将 YashanDB 驱动库路径写在环境变量最前面,除非用于纯 C 程序单独调用。
四、适用范围

五、总结建议

评论