Назад | Перейти на главную страницу

Невозможно создать ссылку на общую библиотеку в systemd

Systemd делает что-нибудь забавное с компоновкой разделяемых библиотек?

У меня есть расширение php, которое загружает общую библиотеку вне каталога расширения php. Если я запускаю php-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

При запуске php-fpm с использованием systemd (systemctl) эта ошибка отображается в журналах:

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/