2008-07-01 17:01: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/ но качалось очень медленно.


2. правим /root/.bash_profile

В него дописываем

LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib
LD_RUN_PATH=/usr/lib/oracle/11.1.0.1/client/lib
ORACLE_HOME=/usr/lib/oracle/11.1.0.1/client
ORACLE_BASE=$ORACLE_HOME

PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib

export PATH LD_LIBRARY_PATH LD_RUN_PATH ORACLE_HOME ORACLE_BASE

куда там дописывать думаю будет понятно по ходу дела

3.  устанавливаем LD_LIBRARY_PATH для сеанса

в консоли говорим:

LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib

4. объясняем ldconfig где брать оракловые библиотеки

в консоли говорим:

ldconfig /usr/lib/oracle/11.1.0.1/client/lib

5. добавляем конфигурацию для указания пути к оракловым библиотекам

Идем смотрим в /etc/ld.so.conf на предмет откуда собирает конфиги и создаем файлик /etc/ld.so.conf.d/oracle11.conf, в котором пишем строчку:

/usr/lib/oracle/11.1.0.1/client/lib

Хотелось обратить внимание на то, что в ld.so.conf сказано собирать файлы *.conf, поэтому наш файл тоже должен быть .conf

6. ставим APXS

Он необходим для сборки PHP как модуля Apache. Ставим httpd-devel из штатного комплекта rpm на диске.

7. ставим php-gd

Необходим для работы с графикой в php. Пакет php-gd имеется в комплекте rpm на диске.

8. собираем Perl Compatible Regular Expressions (pcre) версии >= 6.6

PHP 5.2.6 требует pcre >= 6.6. Где взять pcre ответит гугль. В моем случае собралось без проблем.

Обратите внимание на то, что изначально в конфигурации php было сказано --with-pcre-regex=/usr, а при сборке pcre помещается в /usr/local, поэтому либо собираем либо собираем pcre с префиксом /usr либо не забываем поправить в конфигурации php что pcre теперь в /usr/local

9. Собираем PHP

В моем случае это был PHP 5.2.6. Конфигурационную строчку можно выдрать из уже установленного php 4.3.9 и поправить под свои нужды, у меня получилось вот такая скриптина:

#!/bin/sh

'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--enable-force-cgi-redirect' '--disable-debug' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses=shared' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-xml' '--with-expat-dir=/usr' '--with-dom=shared,/usr' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared' '--with-pcre-regex=/usr/local' '--with-zlib' '--with-layout=GNU' '--enable-bcmath' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-kerberos' '--with-ldap=shared' '--with-mysql' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mbstring=shared' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-mime-magic=/usr/share/file/magic.mime' '--with-apxs2=/usr/sbin/apxs' '--with-oci8=instantclient,/usr/lib/oracle/11.1.0.1/client/lib' '--enable-sigchild'

Еще важный момент, по крайней мере у меня, сначала не завлеся ни GD ни MySQL из-за того, что в конфигурации было сказано что и то и другое =shared. Убираем и shared (см. конфиг выше) и все отлично.

10. правим /etc/httpd/conf.d/php.conf и /etc/httpd/conf/httpd.conf

В /etc/httpd/conf.d/php.conf комментируем загрузку PHP4 и дописываем PHP 5:

#LoadModule php4_module modules/libphp4.so
LoadModule php5_module  /usr/lib/httpd/modules/libphp5.so 

А из /etc/httpd/conf/httpd.conf убираем загрузку PHP 5, которую туда записал инсталлятор.

Это не обязательно, достаточно лишь убрать PHP 4 из php.conf, но для красоты картины надо

Перезапускаем Apache.

11. все!

Прыгаем от радости и пьем ящик пива за здоровье автора 

ЗЫ полезные ссылки по теме