- Скачать с www.php.net последнюю версию php, разархиваровать пакет и перенести его к каталог /usr/local/src для последующего использования:
wget http://lv.php.net/get/php-5.2.2.tar.gz/from/this/mirror
tar -xvzf php-5.2.2.tar.gz
sudo mv php-5.2.2 /usr/local/src/
cd /usr/local/src/php-5.2.2/
- Инсталировать пакеты необходимые для компиляции:
apt-get install build-essential, flex, m4 \
libxml2-dev, libssl-dev, libbz2-dev, libjpeg62-dev, libpng12-dev \
libmysqlclient15-dev, libcurl3-openssl-dev, libqdbm-dev \
libgdbm-dev
- Задать список рабочих библиотек для php для компиляции. Для дальнейших эксперементов можно даже сохранить его как скрипт /usr/local/src/php-5.2.2/go
#! /bin/sh
#
# Created by configure
CFLAGS='-march=i686' \
CXX='gcc' \
'./configure' \
'./configure' \
'--prefix=/usr/local/php5-fcgi' \
'--sysconfdir=/etc/php5-fcgi' \
'--with-layout=PHP' \
'--with-ttf' \
'--with-expat-dir=/usr' \
'--enable-mbstring' \
'--enable-mailparse' \
'--with-config-file-scan-dir=/etc/php5-fcgi' \
'--enable-bcmath' \
'--enable-calendar' \
'--enable-ftp' \
'--enable-gd-native-ttf' \
'--enable-magic-quotes' \
'--enable-posix' \
'--enable-session' \
'--enable-shmop' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-track-vars' \
'--enable-trans-sid' \
'--enable-sockets' \
'--enable-xml' \
'--with-bz2' \
'--with-curl' \
'--with-mime-magic' \
'--with-mysqli=/usr/bin/mysql_config' \
'--enable-dba' \
'--with-inifile' \
'--with-flatfile' \
'--with-gdbm' \
'--with-freetype-dir=/usr' \
'--with-gd' \
'--enable-exif' \
'--with-jpeg-dir=/usr' \
'--with-mysql=/usr/local/mysql' \
'--enable-memcache' \
'--with-mysql-sock=var/run/mysqld/mysqld.sock' \
'--with-openssl' \
'--with-gettext' \
'--with-dom' \
'--with-dom-xslt' \
'--with-png-dir=/usr' \
'--with-regex=php' \
'--with-zlib' \
'--enable-fastcgi' \
'--enable-memory-limit' \
'--enable-discard-path' \
'--enable-force-cgi-redirect' \
"$@"
- Все, можно компилировать. Ввести в консоли следущее:
chmod a+x go
./go
make
make install
make test
sudo make install
- Если компиляция закончилась нормально, следующий шаг создание php.ini
sudo cp /usr/local/src/php-5.2.2/php.ini-recommended /etc/php5-fcgi/php.ini
sudo gedit /etc/php5-fcgi/php.ini
В окне редактора находим и правим следующие строки:
- - - - - -
[Date]
; Defines the default timezone used by the date functions
date.timezone = Europe/Riga
- - - - - -
short_open_tag = On
error_reporting = E_ALL | E_STRICT
display_errors = On
register_argc_argv = On
- - - - - -
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
- - - - - -
- Сделать символьный линк, чтобы система могла наити команду php на привычном месте
sudo ln -s /usr/local/php5-fcgi/bin/php /usr/local/bin/php
- Тест работы; перейти в домашний каталог, открытить консоль и вызвать php. Результат должен быть вроде следующего
noe@noe$ php -v
PHP 5.2.2 (cgi-fcgi) (built: June 26 2007 23:14:22)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
4 comments:
Объясните плиз: зачем собирать из сорцов php, и зачем менять юзераи группу ве-сервера?
1. Если мне не изменяет память, мне нужен был PHP собранный для использования в режиме FastCGI, чего нельзя было получить на тот момент из репозитория.
Кроме того, разработчику иногда необходимо держать на одном компьютере несколько версий PHP/Apache/Lighttpd и так далее, которые могут отличаться версиями, количеством прилинкованных модулей или библиотек.
2. В принципе, менять user/group было не обязательно. В том проекте использовались консольные скрипты и я сделал максимальное приближение к тому что стояло на рабочем сервере.
Сборка из сорцов под таким шикарным пакетным дистрибутивом - признак употребления наркотиков.
Проект проще сопровождать, если версии ПО на девелоперском компьютере максимально приближены к тому что стоит на сервере клиента.
Отправить комментарий