В настоящее время я работаю в компании, которая очень любит использовать СУБД Oracle в проектах PHP, иногда версии 11g. Большинство разработчиков этой компании работают под ОС Windows. За последний месяц некоторые из них решили присоединиться к Linux и установили Ubuntu. Через несколько дней после установки самой ОС перед ребятами встала задача по установке PHP-драйверов для работы с СУБД Oracle — OCI8 и PDO_OCI на базе мгновенного клиента Oracle 11.2, которую они не смогли решить самостоятельно.
Я не нашел подробного, полностью рабочего руководства на русском языке, согласно которому новичок в Linux мог бы выполнить все манипуляции самостоятельно.
В результате мне пришлось несколько раз выполнить ряд одних и тех же действий на своих машинах и написать инструкцию, которую я вам представляю.
Руководство написано для пользователей Ubuntu Linux, но с некоторыми изменениями оно подойдет для пользователей большинства систем Linux.
Подготовка к установке
- Вы должны иметь возможность запускать команды от имени администратора;
- У вас должен быть установлен php5 со следующими пакетами (команда установки со списком):
sudo apt-get install php5 php5-dev php-pear php5-cli sudo pecl install pdo
- У вас должна быть установлена библиотека 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-архив для всех остальных.
- Instantclient-basic — сам мгновенный клиент Oracle
- Instantclient-sdk — набор библиотек для разработки приложений для мгновенного клиента Oracle.
- мгновенный клиент-sqlplus - SQL*Плюс
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
-
Проект Обмена Студенческой Недвижимостью
19 Oct, 24 -
Принцип Матрешки
19 Oct, 24 -
Источник.
19 Oct, 24 -
Maxxbot - Im-Бот Для Всех!
19 Oct, 24 -
Думать По-Другому!
19 Oct, 24