Выстраданное долгими часами на работе практическое пособие по установке
Очень удобно что много библиотек для 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. все!
Прыгаем от радости и пьем ящик пива за здоровье автора
ЗЫ полезные ссылки по теме