Установка Расширений Oci8 И Pdo_Oci Для Php5

В настоящее время я работаю в компании, которая очень любит использовать СУБД Oracle в проектах PHP, иногда версии 11g. Большинство разработчиков этой компании работают под ОС Windows. За последний месяц некоторые из них решили присоединиться к Linux и установили Ubuntu. Через несколько дней после установки самой ОС перед ребятами встала задача по установке PHP-драйверов для работы с СУБД Oracle — OCI8 и PDO_OCI на базе мгновенного клиента Oracle 11.2, которую они не смогли решить самостоятельно.

Я не нашел подробного, полностью рабочего руководства на русском языке, согласно которому новичок в Linux мог бы выполнить все манипуляции самостоятельно.

В результате мне пришлось несколько раз выполнить ряд одних и тех же действий на своих машинах и написать инструкцию, которую я вам представляю.

Руководство написано для пользователей Ubuntu Linux, но с некоторыми изменениями оно подойдет для пользователей большинства систем Linux.



Подготовка к установке

  1. Вы должны иметь возможность запускать команды от имени администратора;
  2. У вас должен быть установлен php5 со следующими пакетами (команда установки со списком):

    sudo apt-get install php5 php5-dev php-pear php5-cli sudo pecl install pdo

  3. У вас должна быть установлена библиотека libaio1:

    sudo apt-get install libaio1



Установка мгновенного клиента Oracle

Скачать мгновенный клиент Oracle с официального сайта http://oracle.com для вашего процессора и архитектуры ОС.

Для Linux мгновенный клиент поставляется в двух версиях:

  • Пакет RPM — Linux, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux и т. д., имеющий поддержку RPM;
  • ZIP-архив для всех остальных.

Вам необходимо скачать 2 файла:
  • Instantclient-basic — сам мгновенный клиент Oracle
  • Instantclient-sdk — набор библиотек для разработки приложений для мгновенного клиента Oracle.
Вы также можете скачать: Создайте каталог, в котором будут расположены файлы мгновенного клиента Oracle (для этого подойдет каталог /opt, зарезервированный для дополнительных пакетов программного обеспечения):

sudo mkdir -p /opt/oracle/

Переместите загруженные файлы в /opt/oracle и перейдите в папку назначения (предположим, что вы загрузили «zip-архивы» в папку «загрузки» вашего пользователя):

sudo mv ~/downloads/instantclient-*.

zip /opt/oracle/ cd /opt/oracle/

Разархивируйте все скачанные архивы:

sudo unzip instantclient-basic-*-*.

zip sudo unzip instantclient-sdk-*-*.

zip

Если вы скачали SQL*Плюс :

sudo unzip instantclient-sqlplus-*-*.

zip

В результате в каталоге /opt/oracle был создан каталог Instantclient_11_2 для мгновенного клиента Oracle 11.2.0.2.0. Давайте переименуем этот каталог в Instantclient (если у вас другая версия/каталог, измените команду) и перейдем в него:

sudo mv instantclient_11_2 instantclient cd instantclient

Далее вам необходимо создать несколько дополнительных каталогов и символических ссылок для нормальной работы клиента (обратите внимание на версию и если у вас другая версия, измените команды):

sudo ln -s /opt/oracle/instantclient/libclntsh.so.* /opt/oracle/instantclient/libclntsh.so sudo ln -s /opt/oracle/instantclient/libocci.so.* /opt/oracle/instantclient/libocci.so sudo ln -s /opt/oracle/instantclient/ /opt/oracle/instantclient/lib sudo mkdir -p include/oracle/11.2/ cd include/oracle/11.2/ sudo ln -s .

/.

/.

/sdk/include client cd - sudo mkdir -p lib/oracle/11.2/client cd lib/oracle/11.2/client sudo ln -s .

/.

/.

/ lib cd -

Создаем конфигурационный файл, в котором будет указан каталог для поиска мгновенных клиентских библиотек Oracle, и подключаем его:

echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf sudo ldconfig

Поскольку в Ubuntu нет каталога /usr/include/php, а клиент все еще его ищет, давайте создадим символическую ссылку на его php5-эквивалент:

sudo ln -s /usr/include/php5 /usr/include/php



Установить OCI8

После всех наших манипуляций расширение oci8 чудесно устанавливается командой пекл :

sudo pecl install oci8

нас просят ввести путь к мгновенному клиенту Oracle, на что мы должны ответить:

instantclient,/opt/oracle/instantclient

Создайте файл подключения расширения:

echo "; configuration for php oci8 module" | sudo tee /etc/php5/conf.d/oci8.ini echo extension=oci8.so | sudo tee -a /etc/php5/conf.d/oci8.ini



Установите PDO_OCI

Чтобы установить PDO_OCI, нам сначала нужно загрузить его с сайта хранилище груш .

Обновим список грушевых пакетов:

sudo pecl channel-update pear.php.net

Скачайте и поместите архив во временную директорию:

sudo mkdir -p /tmp/pear/download/ cd /tmp/pear/download/ sudo pecl download pdo_oci

Извлечем содержимое архива и перейдем к нему:

sudo tar xvf PDO_OCI*.

tgz cd PDO_OCI*

Здесь нам необходимо откорректировать файл config.m4, так как он не содержит данных о нашей версии мгновенного клиента Oracle, последние изменения датируются 2005 годом.

Запустите любимый редактор и внесите изменения с пометкой «+» (обратите внимание на значок версию и если у вас другая, измените строки):

sudo vim config.m4

Ниже приведена разница двух файлов:

*************** *** 7,12 **** --- 7,14 ---- if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4` test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3 + elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then + PDO_OCI_VERSION=11.2 elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then PDO_OCI_VERSION=10.1 elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then *************** *** 119,124 **** --- 121,129 ---- 10.2) PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) ;; + 11.2) + PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) + ;; *) AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION) ;; ***************

Подготавливаем среду для расширения php командой phpize (обратите внимание на версию, если у вас другая версия, измените ее):

sudo phpize

Настраиваем установщик пакетов и устанавливаем пакет (обратите внимание на версию, если у вас другая, измените ее):

sudo .

/configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2 sudo make sudo make install

Создадим для него файл подключения:

echo "; configuration for php PDO_OCI module" | sudo tee /etc/php5/conf.d/pdo_oci.ini echo extension=pdo_oci.so | sudo tee -a /etc/php5/conf.d/pdo_oci.ini



Давайте подведем итоги

Перезапустите Apache и проверьте наличие установленных расширений:

sudo /etc/init.d/apache2 restart php -m



Заключение

Руководство основано на этом почта , который был немного переработан - исправлены ошибки и внесены дополнения.

Надеюсь, статья будет полезна не только моим коллегам по работе.

Теги: #php5 #oracle #ubuntu #linux для всех #pdo #php

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.