Не могу загрузить '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' для модуля DBD :: Oracle: libclntsh.so.12.1 - PullRequest
0 голосов
/ 04 сентября 2018

При попытке запустить скрипт Perl, который создает новую базу данных Oracle на веб-странице PHP, возникает ошибка.

  • Моя страница PHP размещена на сервере Linux (centos7)
  • Обновлены следующие переменные среды:

    export ORACLE_HOME=oracle home path export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH

  • Инструмент Perl выполняется из кода PHP после нажатия кнопки HTML:

    exec("perl scriptName.pl" )

  • Возникает следующая ошибка:

    install_driver (Oracle) не удалось: не удается загрузить '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' для модуля DBD :: Oracle: libclntsh.so.12.1: не удается открыть общий объект file: Нет такого файла или каталога в /usr/lib64/perl5/DynaLoader.pm строка 190. в (eval 17) строка 3. Сбой компиляции в требовании в (eval 17) строке 3. Возможно, необходимая общая библиотека или DLL не установлены там, где ожидается по номеру (eval 10) 22698.

  • Даже при том, что скрипт perl запускается без вызова с веб-страницы php, выполнив: "perl script.pl" на сервере linux, код выполнен и ошибок не возникло.

1 Ответ

0 голосов
/ 17 июня 2019

На самом деле, сообщение об ошибке содержит важный указатель (выделение мое):

install_driver (Oracle) не удалось: не удается загрузить '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' для модуля DBD :: Oracle: libclntsh.so.12.1: невозможно открыть общий объектный файл: нет такой файл или каталог в /usr/lib64/perl5/DynaLoader.pm строка 190. в (eval 17) строка 3. Компиляция завершилась неудачей в требовании (eval 17) строка 3. Возможно, необходимая общая библиотека или DLL не установлены, где ожидается на (eval 10) линии 22698.

Эта проблема возникает, когда библиотеки Oracle «Instant Client» недоступны через переменную среды LD_LIBRARY_PATH. Этот набор библиотек содержит (среди прочего) libclntsh.so (суффикс зависит от версии). После того, как он установлен, просто убедитесь, что соответствующий путь присутствует в LD_LIBRARY_PATH.

...