02 Сентября 2016 15:12

Oracle Client вместе с PHP-FPM

PHP Oracle Linux

PHP-FPM

Достаточно часто встречается связка Nginx + PHP-FPM, которая заменяет собой привычный многим Apache + mod_php. А когда требуется добавить возможность работать с Oracle из PHP, то не подготовленный человек, а точнее привычный к настройке Oracle Client для PHP, работающего как модуль Apache, может столкнуться с непредвиденными проблемами, о решении которых я попробую рассказать.

Итак, у нас CentOS (в принципе на других Linux все будет аналогично) на который уже установлен Nginx, PHP, PHP-FPM и Oarcle Client + модуль php_oci8. На всякий случай, в этом можно убедиться командой:

# php -m | grep oci

Если вывод такой же, как в примере ниже, то модуль установлен:

# php -m | grep oci
oci8

Но при попытке использовать oci_connect(...) получаем вот такую ошибку:

Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories in /var/www/...

Когда все известные бубны с прописыванием ORACLE_HOME и LD_LIBRARY_PATH во все скрипты запуска и прочие перебраны, но все равно не работает, то простое решение кажется просто невозможным, но оно есть!

Читать дальше...

09 Февраля 2016 15:28

Установка Oracle Client на Mac OS

PHP Oracle Mac OS

В продолжение темы про установку Oracle Client на Windows расскажу про свой опыт установки аналогичной связки для Mac OS.

На старте имеем Mac OS X 10.10 Yosemite в которой уже работает штатный web сервер apache и php 5.4. Цель первая - получить рабочий Oracle Client, иметь возможность работать с Oracle через Toad (да да, для мака есть тоад, и он бесплатный). Цель вторая - иметь возможность работать с Oracle из PHP.

Для начала качаем Oracle Instant Client для Mac OS с сайта oracle.com (там нужно регистрироваться):

  • instantclient-basic-macos.x64-11.2.0.4.0.zip (обязательно)
  • instantclient-sqlplus-macos.x64-11.2.0.4.0.zip (если хотим проверить, а тоад ставить нет планов)
  • instantclient-sdk-macos.x64-11.2.0.4.0.zip (если планируем использовать в PHP)

* я для себя выбрал 11-ю версию для того чтоб иметь возможность работы со старыми БД, например 9-й версии.

Распаковываем содержимое архивов в удобное место, для меня это /Library/Oracle. Возможны и другие варианты, но для меня более логично показалось так, далее все описания будут производиться относительно этого пути.

В результате получаем вот такую структуру папок:

/Library/Oracle/instantclient_11_2
/Library/Oracle/instantclient_11_2/sdk (если решили с SDK)

Далее создаем линки:

cd /Library/Oracle/instantclient_11_2
ln -s libclntsh.dylib.11.1 libclntsh.dylib
ln -s libocci.dylib.11.1 libocci.dylib.dylib

Читать дальше...

15 Марта 2011 19:55

Установка Oracle Client под Windows

Oracle Windows

Применимо для Windows XP x32 (Oracle Client Basic 10.2.0.4 + ODBC) и для Windows 7 x64 (Oracle Client Basic 11.1.0.6.0 x32).

В связи с участившимися вопросами "как ставить oracle client" опубликую что-то вроде инструкции из собственного опыта.

Первым делом нужно обзавестись самим клиентом, его можно скачать с сайта Oracle или еще где-то. Понадобится

  • instantclient-basic-win32-XXXX.zip
  • instantclient-odbc-win32-XXXX.zip (если требуется чтобы драйвер Oracle появился в Панель управления → Источники данных (ODBC))

Для работы PHP OCI8 и TOAD вполне будет достаточно только архива instantclient-basic. Приступим.

Читать дальше...

06 Октября 2008 14:57

Вытаскиваем из оракла данные по периоду

Про работу В мемориз Oracle

В связи с появлением проблемы 6-го дня (см. предыдущий пост) вытащить период (данные за определенный промежуток вермени с шагом например в день), у которого есть дата начала и дата конца, средствами php становится невозможно, поэтому пришлось выдумывать хитрую, но 100% рабочую схему в Oracle.

Начальная ситуация: статистика, есть таблица с периодами (periods) и таблица со статистическими данными, которые расположены по датам (несколько записей за день), но не всегда за все даты есть данные или требуется отобразить период, который еще не закончился, но показать нужно от начала до конца с нулями за даты, которые еще не прошли.

 select d.dt, sum(<здесь все что нужно выбрать из таблицы статистики>)
 from
 ( 
   SELECT (TRUNC(( select databegin from periods where period_id= '<идентификатор периода>' ), 'DD') + ROWNUM -1) as dt  
   FROM all_objects WHERE ROWNUM <= ( select trunc(dataend) - trunc(databegin) from periods where period_id= '<идентификатор периода>' ) + 1
) d
left join 
( <таблица или несколько статистики> ) e
on d.dt=trunc(e.date)
group by d.dt

Читать дальше...

01 Июля 2008 17:01

PHP 5 + Oracle Client 11 на RHEL 4

Про работу PHP Oracle Linux

Выстраданное долгими часами на работе практическое пособие по установке

PHP 5 + Oracle Instant Client 11 на RedHat Enterprise Linux 4

Очень удобно что много библиотек для php представлены в виде rpm на болванке, это немного упростило задачу. Итак вашему вниманию инструкция из 12 пунктов:

0. Изначально имеем установленный RHEL4 с предустановленным PHP 4.3.9 и MySQL 4.1

Сразу хочется оговориться насчет путей, они все спецефичны для RHEL 4 и на других системах и версиях могут быть другими.

1. Ставим Oracle Client

В моем случае это 11 версия, тк 10 не пошло. Благо клиент доступен в rpm. В общем ставим

oracle-instantclient-basic-11.1.0.1-1.i386.rpm
oracle-instantclient-devel-11.1.0.1-1.i386.rpm

Эти rpm доступны на официальном сайте оракла, но требуется регистрация для скачивания, но можно поискать на filesearch и может что найдется

Для меня нашлось на http://eduunix.ccut.edu.cn/index/database/Oracle%20Instant%20Client/ но качалось очень медленно.

Читать дальше...

Фильтр