无法链接到 systemd 下的共享库

无法链接到 systemd 下的共享库

systemd 在链接共享库时做了一些有趣的事情吗?

我有一个 php 扩展,它会加载 php 扩展目录之外的共享库。如果我运行 php-cli 或从 CLI 启动 php-fpm,它会按预期工作,并且 phpinfo() 会显示扩展的构建方式:

Compile-time ORACLE_HOME    /path/to/oracle_home
Libraries Used  -Wl,-rpath,/path/to/oracle_home/lib -L/path/to/oracle_home/lib -lclntsh

使用 systemd(systemctl)启动 php-fpm 时,日志中出现以下错误:

NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/oci8.so' - libclntsh.so.12.1: cannot open shared object file: No such file or directory in Unknown on line 0

-lclntsh 不应该使用 rpath 来查找所需的库吗?为什么 systemd 会破坏这一点?

注意:将以下内容添加到单元文件没有帮助:

Environment=LD_LIBRARY_PATH=/path/to/oracle_home/lib

在 /etc/ld.so.conf.d/ 下添加该路径也无济于事。

相关内容