Собираем PHP

Моему любимому фреймворку Symfony2 понадобилась версия PHP новее, чем 5.4.11, но в официальной репе ее еще нет, поэтому придется собирать PHP руками.

Итак, поехали.

1. Скачиваем PHP с официального сайта

2. распаковываем в директорию например /root/tmp

3. в итоге все сорцы лежат в /root/tmp/php-5.4.29/ заходим туда и смотрим, с какими опциями мы можем собрать наш PHP:

./configure --help

4. начинаем собирать PHP-конфиг с нужными нам опциями:

./configure \
'--with-pdo-mysql' \
'--with-mysql' \
'--with-curl' \
'--enable-intl' \
'--enable-mbstring=all' \
'--with-iconv' \
'--with-iconv-dir' \
'--enable-zip' \
'--with-xsl' \
'--with-zlib' \
'--with-gd' \
'--with-jpeg-dir' \
'--with-iconv-dir' \
'--with-openssl' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/conf.d' \
'--with-apxs2=/usr/bin/apxs2'

Если не указать путь к директории в настройке --with-config-file-path= то PHP будет искать файл по адресу /usr/local/lib/php.ini

В --with-config-file-scan-dir указывается директория, в которой PHP будет искать доп. файлы конфигураций, т.е. то, что Вы могли бы указать в php.ini, но решили вынести в отдельные файлы, обычно в этих файлах указываются настройки PHP-библиотек, например библиотек mysql или xdebug

Снова пробую собрать конфиг и получаю ошибку:

If configure fails try --with-jpeg-dir=<DIR>
If configure fails try --with-vpx-dir=<DIR>
configure: error: png.h not found. 

Пришлось доустановить:

aptitude install libpng-dev

Все равно ругнулось:

configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution 

Пришлось доустановить:

aptitude install libxslt-dev

Опять ругнулось:

configure: error: jpeglib.h not found.

Пришлось доустановить:

aptitude install libjpeg-dev

Подробнее про опцию with-apxs2:

--with-apxs2=/usr/sbin/apxs2 - указывает путь к утилите apxs, необходимая для сборки и установки модулей для Apache (иначе php соберется без libphp5.so), но если попробовать ее установить:

aptitude install apxs

Couldn't find any package matching "apxs". However, the following
packages contain "apxs" in their description:
apache2-threaded-dev apache2-prefork-dev

нам подскажут, что  утилита содержится в 2-х версиях пакетов, я согласно рекомендации офиц. документации выбираю apache2-prefork-dev, устанавливаю его и проверяю, куда установился apxs2:

# which apxs2
/usr/bin/apxs2

Все верно, параметр мы указали правильно. Пробуем собрать конфиг - ура, конфиг собрался. И т.к. далее, checkinstall будет подменять нам /usr/lib/apache2/modules/libphp5.so на новый, нужно остановить Apache:

service apache2 stop

На всякий случай выполним:

make clean

Узнаем текущую версию PHP:

# aptitude search '~i' | grep php
i A php5-cli                        - command-line interpreter for the php5 scri
i A php5-common                     - Common files for packages built from the p
i   php5-mysql                      - MySQL module for php5                     
i   php5-xdebug                     - Xdebug Module for PHP 5                   
id  php5.4.3                       - php-5.4.3

и удалим ее (т.к. далее мы будем запускать checkinstall, который не только соберет нам пакет, но и установит нам его):

aptitude remove php5.4.3

Теперь, чтобы не делать make install соберем наш PHP в deb-пакет, который ничего не испортит и который можно удалить. Для этого есть замечательная утилита - checkinstall, давайте установим ее:

aptitude install checkinstall

Теперь соберем PHP в deb-пакет:

checkinstall --pkgname php5.4.29 --pkgversion 5.4.29 --maintainer my@site.ru

На определенном этапе checkinstall спросит описание пакета (short description), которое будет выводиться о пакете, если дать команду dpkg -l. Напишем там что-то незамысловатое:

PHP 5.4.29

Нажмем пару раз Enter и процесс побежал. Если checkinstall спросит:

This package will be built according to these values:

0 - Maintainer: [ my@site.ru ]
1 - Summary: [ php 5.4.29 ]
2 - Name: [ php5.4.29 ]
3 - Version: [ 5.4.29 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ php-5.4.29 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ php5.3.29 ]
12 - Conflicts: [ ]
13 - Replaces: [ ]

Enter a number to change any of them or press ENTER to continue:

просто нажмите Enter.

Примерно через 10 минут пакет будет собран в текущей директории и установлен + мы получим надпись:

**********************************************************************

Done. The new package has been installed and saved to

/root/tmp/php-5.4.29/php5.4.29_5.4.29-1_i386.deb

You can remove it from your system anytime using:

dpkg -r php5.4.29

**********************************************************************

Проверяем:

php -v
PHP 5.4.29 (cli) (built: Oct 15 2014 04:38:20)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Чтобы Apache узнал про обновление PHP (при установке обновился /usr/lib/apache2/modules/libphp5.so), ребутнем Apache:

service apache2 restart

Теперь можете запустить в браузере какой-нибудь PHP-скрипт с кодом <?php phpinfo(); ?>

Удачи, господа.

Источник: 1

P.s. PHP 5.4.33 у меня не собирается и вылазит ошибка:

libphp5.so: undefined symbol: php_output_write Action 'configtest' failed."

поэтому, я решил собрать предыдущую версию 5.4.29.

Оцени публикацию:
  • 1,5
Оценили человек: 1

Похожие статьи:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »