Как я ставил ПХП6

------------------ I. Настройка FreeBSD -----------------

Версия системы
zg# uname -r
7.2-RELEASE

Пакеты
zg# pkg_info
pkg_info: no packages installed

Монтируем установочный диск
zg# mount /cdrom/

Ставим тяжёлые пакеты
zg# cd /cdrom/packages/All/
zg# pkg_add perl-5.8.9_2.tbz gettext-0.17_1.tbz python25-2.5.4_1.tbz

Ставим порты (если они уже есть, то можно пропустить)
zg# cd /cdrom/7.2-RELEASE/ports/
zg# ./install.sh

Синхронизируем время
zg# ntpdate ntp.ru
26 Jun 23:06:07 ntpdate[887]: step time server 193.124.11.11 offset 3740.968741 sec

Обновляем порты
zg# csup -h cvsup6.ru.freebsd.org /usr/share/examples/cvsup/ports-supfile

Ставим консольный браузер, чтобы тестировать веб-сервер
zg# make -C/usr/ports/www/links1/ install clean

------------------ II. Установка MySQL -----------------

Устанавливаем MySQL
zg# pkg_add -r mysql60-server

Обновление системных команд
zg# rehash

Устанавливаем базы MySQL
zg# mysql_install_db

Меняем владельца баз на mysql, чтобы не было проблем с правами
zg# chown -R mysql:mysql /var/db/mysql/

------------------ III. Установка апача -----------------

Устанавливаем апач (все опции по умолчанию)
zg# cd /usr/ports/www/apache22/
zg# make install clean

------------------ IV. Установка библиотек для пхп -----------------

Библиотека для работы с XML
zg# make -C/usr/ports/textproc/libxml2 install clean

Библиотека для работы с XSLT
zg# make -C/usr/ports/textproc/libxslt install clean

Библиотека для работы кодировками
zg# make -C/usr/ports/converters/iconv install clean

Графика в пхп
zg# make -C/usr/ports/graphics/gd install clean

Модуль для работы с UTF
zg# make -C/usr/ports/devel/icu install clean

------------------ V. Сборка и установка пхп -----------------

Создаём каталог для пхп и переходим в него
zg# mkdir /usr/local/php6
zg# cd /usr/local/php6/

Выгружаем девелоперскую сборку
zg# fetch http://snaps.php.net/php6.0-200906261630.tar.bz2

Распаковываем архив
zg# tar xf php6.0-200906261630.tar.bz2

Переходим в папку с сырцами пхп
zg# cd php6.0-200906261630

Изучаем опции, с которыми можно конфигурировать пхп
zg# ./configure --help | more

Конфигурируем пхп
zg# ./configure --prefix=/usr/local/php6 --with-apxs2=/usr/local/sbin/apxs \
       --with-config-file-scan-dir=/usr/local/php6/ \
       --with-gd --enable-mbstring --with-mysql \
       --with-pdo-mysql --with-xsl

Собираем сырцы
zg# make

Ставим пхп6
zg# make install

Проверяем, что получилось
zg# rehash
zg# /usr/local/php6/bin/php -i | more

------------------ VI. Настройка апача -----------------

Определяем имя хоста
zg# hostname
zg.test.local

Создаём домашнюю папку для хоста по умолчанию
zg# mkdir -p /usr/local/www/zg.test.local/docs

Создаём индексный файл с информацией о пхп
zg# echo '<? phpinfo(); ?>' > /usr/local/www/zg.test.local/docs/index.php

Создаём папку для логов хоста
zg# mkdir -p /usr/local/www/zg.test.local/logs

Создаём конфиг для виртуального хоста
zg# ee /usr/local/etc/apache22/Includes/0-zg.test.local.conf

<VirtualHost *:80>
    <IfModule mod_php6.c>
        AddType application/x-httpd-php .php
        DirectoryIndex index.php index.html index.htm
    </IfModule>
    ServerAdmin some@admin
    DocumentRoot "/usr/local/www/zg.test.local/docs"
    <Directory "/usr/local/www/zg.test.local/docs">
         AllowOverride All
         Order Deny,Allow
         Allow from all
    </Directory>
    ServerName zg.test.local
    ServerAlias www.zg.test.local
#    ErrorLog /usr/local/www/zg.test.local/logs/error.log
#    CustomLog /usr/local/www/zg.test.local/logs/access.log common
</VirtualHost>

Выставляем правильные права
zg# chown -R www:www /usr/local/www/zg.test.local/

Проверяем конфиг
zg# apachectl configtest
Syntax OK

Проверяем подгрузился ли наш виртуалхост
zg# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   zg.test.local (/usr/local/etc/apache22/Includes/0-zg.test.local.conf:1)
Syntax OK

------------------ VII. Запуск MySQL и Apache -----------------

Добавляем запуск демонов апача и мускуля
zg# echo '' >> /etc/rc.conf
zg# echo 'apache22_enable="YES"' >> /etc/rc.conf
zg# echo 'mysql_enable="YES"' >> /etc/rc.conf

Запускаем мускул и апач
zg# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
zg# /usr/local/etc/rc.d/apache22 start
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.

Проверяем работоспособность мускула
zg# sockstat | grep mysql
mysql    mysqld     24782 19 tcp46  *:3306                *:*
mysql    mysqld     24782 20 stream /tmp/mysql.sock

Проверяем работоспособность апача
zg# sockstat | grep http
www      httpd      24799 3  tcp46  *:80                  *:*
www      httpd      24799 4  tcp4   *:*                   *:*
www      httpd      24798 3  tcp46  *:80                  *:*
www      httpd      24798 4  tcp4   *:*                   *:*
www      httpd      24797 3  tcp46  *:80                  *:*
www      httpd      24797 4  tcp4   *:*                   *:*
www      httpd      24796 3  tcp46  *:80                  *:*
www      httpd      24796 4  tcp4   *:*                   *:*
www      httpd      24795 3  tcp46  *:80                  *:*
www      httpd      24795 4  tcp4   *:*                   *:*
root     httpd      24794 3  tcp46  *:80                  *:*
root     httpd      24794 4  tcp4   *:*                   *:*

------------------ VIII. Проверка работоспособности пхп6 -----------------

Проверяем работоспособность пхп6 и виртуалхоста
zg# links -dump http://zg.test.local | head
   PHP Logo

                             PHP Version 6.0.0-dev

                   FreeBSD zg.test.local 7.2-RELEASE FreeBSD 7.2-RELEASE #0:
   System          Fri May 1 08:49:13 UTC 2009
                   root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
                   i386
   Build Date      Jun 27 2009 00:26:32
                   './configure' '--prefix=/usr/local/php6'


Всё работает :)