写点什么

YashanDB|Ubuntu 加载 C 驱动后 PHP 启动失败? 原来是“库冲突”惹的祸

作者:数据库砖家
  • 2025-04-24
    广东
  • 本文字数:587 字

    阅读完需:约 2 分钟

在 Ubuntu 系统中配置 YashanDB 数据库时,一些开发者会将 C 驱动路径加入 LD_LIBRARY_PATH,以支持 PHP、Python 等语言通过 C 接口连接数据库。但在实际操作中,有用户反馈:

“一加完路径 PHP 就启动不了,提示 pcre 模块错误!”


一、问题现象

在 Ubuntu 系统下,当将 YashanDB 提供的 C 驱动库路径加入环境变量后,执行 PHP 时报如下错误:

PHP Fatal error:Unable to start pcre module in Unknown on line 0
复制代码

二、问题原因分析

此问题根源是 系统内置库与驱动依赖库发生冲突,具体如下:

  1. YashanDB 的 C 驱动依赖 libpcre2-8.so


    驱动包内自带了该库版本,放在 lib 目录下;


    该版本为新版本的 PCRE2.

  2. Ubuntu 系统自带的是 pcre3(较老版本)

PHP 本身依赖系统的 pcre3;

当环境变量中 LD_LIBRARY_PATH 优先搜索 YashanDB 驱动路径时,PHP 会错误加载了不兼容的 PCRE2;

导致 PHP 启动失败,报错如上。

三、解决方案

调整环境变量中库搜索顺序

修改 LD_LIBRARY_PATH,将系统默认的库路径放在最前面,如下所示:

export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib/x86_64-linux-gnu/:/data/opt/yashan/yashandb-client-23.2.1.100-linux-x86_64/lib
复制代码

注意事项:

/lib, /usr/lib 等系统路径必须写在前面;

这样可以保证 PHP 启动时先加载系统原生的 libpcre 版本,避免冲突;

不建议将 YashanDB 驱动库路径写在环境变量最前面,除非用于纯 C 程序单独调用。

四、适用范围

五、总结建议


用户头像

还未添加个人签名 2025-04-09 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB|Ubuntu 加载 C 驱动后 PHP 启动失败?原来是“库冲突”惹的祸_数据库·_数据库砖家_InfoQ写作社区