марта 21, 2010

На злобу дня.

Закон технологии Лермана.
Любую техническую проблему можно преодолеть, имея достаточно времени и денег.

Закон Джухэни.
Компромисс всегда обходится дороже, чем любая из альтернатив.

Аксиома Дучарма.
Если рассмотреть проблему достаточно внимательно, то Вы увидите себя как часть этой проблемы.

Закон Муира.
Когда мы пытаемся вытащить что-нибудь одно, оказывается, что оно связано со всем остальным.

Закон Мэрианна.
Находишь всегда то, что не искал.

Закон Буба.
То, что ищешь, найдешь, только обыскав все.

Закон Хелранга.
Подожди - и плохое само собой исчезнет.

Закон термодинамики Мерфи.
Под давлением все ухудшается.

Первый закон Чизхолма.
Все, что может испортиться, портится.

Афоризм Кохрэйна.
Получая направление на анализ подумайте, что Вы предпримете, если результат окажется: а) положительным, б) отрицательным. Если ответы совпадут, надобность в анализе отпадет.

Комментарий Лорда Коэна.
Доступность операции - еще не показатель того, что ее надо делать.

Четыре принципа производственника.
В наборе инструментов не хватает именно того гаечного ключа или сверла, которые нужны. Для выполнения большинства операций требуются три руки. Оставшиеся гайки никогда не подходят к оставшимся болтам. Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так.

Постулат Персига.
Число разумных гипотез, объясняющих любое данное явление, бесконечно.

Третий закон Финейгла.
В любом наборе исходных данных самая надежная величина, не требующая никакой проверки, является ошибочной.

Закон Шмидта.
Если долго портить машину, она сломается.

Первый закон ремонта.
Нельзя починить то, что не сломано.

Правило точности.
Работая над решением задачи, всегда полезно знать ответ.

Правило точности Рэя.
Измеряй микрометром. Отмечай мелом. Отрубай топором.

Закон силы Энтони.
Не тратьте силы, возьмите молоток побольше!

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

Закон Лоуэри.
Заело деталь - надави на нее. Если сломалась - ничего: все равно надо было заменять...

Закон Купера.
Если Вам неприятно какое-то слово в техническом тексте, не обращайте внимания. Текст полностью сохраняет смысл и без него.

Первое правило умного ремонта.
Ничего не выбрасывай.

Аксиома Кана.
Если ничто другое не помогает, прочтите, наконец, инструкцию!
или 50

|

марта 11, 2010

PHP-OCI8 Ubuntu LTS

1. Устанавливаем apache, php (модули опционально) :
# apt-get install apache2 php5-common php5 php5-dev libapache2-mod-php5
# php5-cli


2. Устанавливаем пакеты для сборки модуля php из pear:
# apt-get install build-essential php-pear

3. Устанавливаем библиотеку libaio:
# apt-get install libaio1

4. Создаем каталоги:
# mkdir /opt/oracle/instantclient/
# mkdir /opt/oci8/


5. Скачиваем с офсайта последние версии Instantclient и SDK http://www.oracle.com/technology/tech/oci/instantclient/index.html . Должны быть два архива zip (в нашем случае это были basic-10.2.0.4.0-linux-x86_64.zip и sdk-10.2.0.4.0-linux-x86_64.zip)

6. Копируем скачанные архивы в каталог /opt/oracle/instantclient/, переходим в него и разархивируем содержимое:
# cd /opt/oracle/instantclient/
# unzip \*.zip


7. Создаем символические ссылки на библиотеки, т.к. бОльшая часть софта, в том числе и oci8, ориентируется на создаваемые имена библиотек:
# cd /opt/oracle/instantclient/instantclient_10_2/
# ln -s libocci.so.10.1 libocci.so
# ln -s libclntsh.so.10.1 libclntsh.so


8. Обновляем кэш динамических библиотек:
# echo /opt/oracle/instantclient/instantclient_10_2/ >> /etc/ld.so.conf
# ldconfig


9. Переходим в каталог и скачиваем модуль oci8:
# cd /opt/oci8/
# pecl download oci8


10. Разархивируем модуль, переходим в каталог с исходниками oci8 и подготавливаем окружение для сборки модуля:
# tar -xzf oci8-1.4.0.tgz
# cd /opt/oci8/oci8-1.4.0
# phpize


11. Перед самой сборкой устанавливаем переменные окружения оракула:
# export ORACLE_HOME=/opt/oracle/instantclient/instantclient_10_2

12. Проверяем переменную окружения:
# echo $ORACLE_HOME
Должны получить ответ:
# /opt/oracle/instantclient/instantclient_10_2

14. Собираем модуль:
# cd /opt/oci8/oci8-1.4.0
#./configure \
--with-oci8=share,instantclient,/opt/oracle/instantclient/instantclient_10_2


15. Собираем модуль oci8:
# make
# make install


16. Редактируем конфиги php:
# echo extension=oci8.so; /etc/php5/apache2/php.ini
# echo extension=oci8.so; /etc/php5/cli/php.ini


17. Само расширение установлено в каталоге:
# /usr/lib/php5/20060613/

18. Перезапускаем apache и все. Я проверял наличие модуля выводом функции
phpinfo()

19. Создаем каталог для файлов sqlnet.ora и tnsnames.ora
mkdir -p /opt/oracle/instantclient/instantclient_10_2/network/admin

20. В конфиге апача или виртуалхоста (а также .htaccess) можно установить переменные:
SetEnv TNS_ADMIN «/opt/oracle/instantclient/instantclient_10_2/network/admin»
SetEnv LD_LIBRARY_PATH «/opt/oracle/instantclient/instantclient_10_2»
SetEnv ORACLE_HOME «/opt/oracle/instantclient/instantclient_10_2»
SetEnv NLS_LANG=RUSSIAN_CIS.AL32UTF8