модуль php oci8 не загружен (ubuntu 16)

У меня проблема: модуль oci8 не загружен.

Операционная система - Ubuntu 16 с Apache 2.4 и PHP 5.6.

Я делаю следующие шаги:

  • Я загрузил пакеты Oracle Instant Client Basic и SDK: (oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm, oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm )
  • Установите Oracle Instant Client (после преобразования .rpm в .deb)
  • Загрузите расширение OCI8 из PECL (oci8-2.0.12)
  • Соберите модуль PHP OCI8
  • Скопируйте oci8.so в каталог модулей (/ usr / lib / php / 20131226 /)
  • Отредактируйте файл php.ini и добавьте расширение с полным путем (extension = / usr / lib / php / 20131226 / oci8.so)
  • Я добавил путь библиотеки oracle к переменной окружения LD_LIBRARY_PATH = / usr / lib / oracle / 11.2 / client / lib
  • Перезагрузите Apache

Модуль не загружен, и журналы Apache показывают следующую ошибку:

Невозможно загрузить динамическую библиотеку '/usr/lib/php/20131226/oci8.so' - libaio.so.1: невозможно открыть файл общих объектов: нет такого файла или каталога в Неизвестно в строке 0


person Ahmad Abdullah    schedule 04.12.2016    source источник
comment
Может ли ваш процесс получить доступ к файлу oci8.so? Атрибуты chmod хороши?   -  person Alexandre Tranchant    schedule 04.12.2016
comment
Спасибо @Alexandre T, я думаю, что это атрибуты, как и другие модули php, например -rwxr-xr-x 1 root root 624416 Dec 3 15:42 oci8.so. -rw-r--r-- 1 root root 1463904 Nov 14 05:35 mbstring.so -rw-r--r-- 1 root root 47256 Nov 14 05:35 mcrypt.so -rw-r--r-- 1 root root 55432 Nov 14 05:35 mysql.so   -  person Ahmad Abdullah    schedule 04.12.2016
comment
Что будет, если убрать флаг исполняемого файла? chmod a-x oci8.so Ошибка сохраняется?   -  person Alexandre Tranchant    schedule 04.12.2016
comment
Что в результате $ locate libaio.so? Соответствует ли это LD_LIBRARY_PATH   -  person Alexandre Tranchant    schedule 04.12.2016
comment
Большое спасибо @Alexandre T. Команда locate показывает пустой результат, я пробую sudo apt-get install libaio1, и проблема решена.   -  person Ahmad Abdullah    schedule 04.12.2016


Ответы (2)


Проблема была в библиотеке libaio.so, как упоминал @Alexandre, это несоответствие 32/64 бит.

Я обнаружил проблему в ответе @Codo: https://stackoverflow.com/a/10619763/1995358

Проблема решена после повторной установки библиотеки libaio.so:

sudo apt-get install libaio1

person Ahmad Abdullah    schedule 11.12.2016

Убедитесь, что LD_LIBRARY_PATH установлен там, где его находит Apache, возможно, в файле envvars Apache. Или вы можете обновить ldconfig, если на вашем компьютере нет другого программного обеспечения Oracle. В бесплатном Underground PHP содержится много информации. & Руководство Oracle

Пара вопросов: почему бы не использовать Instant Client 12.1? Благодаря этому вы можете подключиться к Oracle DB 10.2 и новее.

Также почему вы преобразовали RPM, а затем переместили вывод в каталог пользователя? Почему бы просто не загрузить zip-файлы Instant Client и разархивировать их? Все, что вам нужно сделать, это добавить символическую ссылку, указанную в инструкциях на странице загрузки.

person Christopher Jones    schedule 06.12.2016