Карта сайта
Обслуживание компьютеров, ремонт компьютеров, 1С предприятие, обслуживание серверов,создание сайтов, продвижение сайтов, доработка 1С предприятие
О компании | Статьи | | Установка нескольких независимых версий PHP на одном веб-сервере Apache

« Назад « На главную

Установка нескольких независимых версий PHP на одном веб-сервере Apache

Эта статья описывает метод установки произвольного количества версий PHP на один сервер. При этом все версии будут работать параллельно и обрабатываться одним скриптом.

Суть метода состоит в использовании CGI-обработчиков, которые привязываются по расширению к php-файлам. К примеру, файлы .php449 будут обрабатываться четвёртым PHP, а файлы .php600 шестой версией, и т.д.

Для реализации данного метода требуется уже настроенный веб-сервер Apache, а также доступ в Интернет. Способ установки веб-сервера описан в статье Установка web-сервера (FAMP).

Внимание! CGI-обработчики могут быть "дырой" в безопасности. Если сервер находится под "нагрузкой", то позаботьтесь о дополнительных мерах безопасности. Более подробная информация находится по адресу http://php.net/security.cgi-bin.

------------------ I. Подготовка системы -----------------

Создём папку, где будут лежать архивы с дистрибутивами пхп
zg# mkdir /usr/local/php-dist

Сами архивы можно скачать по следующим адресам
- текущие релизы http://www.php.net/downloads.php
- релиз-кандидаты http://qa.php.net/
- устаревшие релизы http://www.php.net/releases/
- сборки разработчиков http://snaps.php.net/

Будте внимательны! Те ссылки, которые приведены здесь, могут не работать.
Это связано с тем, что актуальность некоторых сборок с течением времени
становится крайне мала. Только релизы, как правило, имеют постоянное место
размещения. Девелоперские сборки и релиз-кандидаты устаревают очень быстро.

------------------ II. Установка PHP 4.4.9 -----------------

Переходим в папку с дистрибутивами пхп
zg# cd /usr/local/php-dist/

Скачиваем исходный код нужной версии пхп
zg# fetch -o php-4.4.9.tar.bz2 http://ru2.php.net/get/php-4.4.9.tar.bz2/from/this/mirror

Распаковываем архив в текущую апаку
zg# tar xf php-4.4.9.tar.bz2

Переходим в папку с исходным кодом
zg# cd php-4.4.9

Конфигурируем пхп с нужными параметрами (опция --disable-cli обязательна!)
zg# ./configure --prefix=/usr/local/php/4.4.9 --disable-cli

Устанавливаем пхп
zg# make install clean

Устанавливаем конфиг php.ini
zg# cp php.ini-dist /usr/local/php/4.4.9/lib/php.ini

------------------ III. Установка PHP 5.3.1RC1 -----------------

Переходим в папку с дистрибутивами пхп
zg# cd /usr/local/php-dist/

Качаем нужную версию пхп
zg# fetch -o php-5.3.1RC1.tar.bz2 http://downloads.php.net/johannes/php-5.3.1RC1.tar.bz2

Распаковываем архив
zg# tar xf php-5.3.1RC1.tar.bz2

Переходим в папку с исходным кодом
zg# cd php-5.3.1RC1

Конфигурируем пхп
zg# ./configure --prefix=/usr/local/php/5.3.1RC1

Устанавливаем пхп
zg# make install clean

Устанавливаем конфиг
zg# cp php.ini-production /usr/local/php/5.3.1RC1/lib/php.ini

------------------ IV. Установка PHP 6 -----------------

Для шестого пхп требуется ICU. У меня его в системе не было, поэтому я его устанавливаю
перед установкой пхп.
zg# pkg_add -r icu

Переходим в папку с дистрибутивами пхп
zg# cd /usr/local/php-dist/

Качаем девелоперскую сборку пхп 6
zg# fetch http://snaps.php.net/php6.0-200909050830.tar.bz2

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

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

Конфигурируем
zg# ./configure --prefix=/usr/local/php/6.0.0

Устанавливаем
zg# make install clean

Устанавливаем конфиг
zg# cp php.ini-production /usr/local/php/6.0.0/lib/php.ini

------------------ IV. Настройка папки cgi-bin -----------------

Определяем текущее положение папки cgi-bin
zg# grep "ScriptAlias /cgi-bin" /usr/local/etc/apache22/httpd.conf
ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

Переходим в папку cgi-bin
zg# cd /usr/local/www/apache22/cgi-bin/

Создаём символические ссылки на CGI-исполняемые файлы пхп
zg# ln -s /usr/local/php/4.4.9/bin/php php449
zg# ln -s /usr/local/php/5.3.1RC1/bin/php-cgi php531RC1
zg# ln -s /usr/local/php/6.0.0/bin/php-cgi php600
zg# ln -s /usr/local/bin/php-cgi phpLOCAL

Редактируем конфиг апача, чтобы разрешить символические ссылки в cgi-bin
zg# ee /usr/local/etc/apache22/httpd.conf

Находим секцию .
И заменяем (или добавляем) Options None на Options FollowSymLinks.
У меня конфиг получился таким:


AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all


Сохраняем файл и выходим из редактора.

------------------ V. Настройка папки с несколькими версиями PHP -----------------

Создаём конфиг для папки, в которой будет работать несколько версий пхп
zg# ee /usr/local/etc/apache22/Includes/multi-php.conf

Alias /multi-php/ "/usr/local/www/multi-php/"


# Привязываем разные расширения файлов к разным типам
AddType x-httpd-php-449 .php449
AddType x-httpd-php-531rc1 .php531rc1
AddType x-httpd-php-600 .php600
AddType x-httpd-php-local .phplocal

# Для каждого типа создаём соответствующий CGI-обработчик
Action x-httpd-php-449 /cgi-bin/php449
Action x-httpd-php-531rc1 /cgi-bin/php531RC1
Action x-httpd-php-600 /cgi-bin/php600
Action x-httpd-php-local /cgi-bin/phpLOCAL

Order Deny,Allow
Allow from all


Создаём папку
zg# mkdir -p /usr/local/www/multi-php/

Переходим в папку
zg# cd /usr/local/www/multi-php/

Качаем небольшую формочку для более удобного запуска пхп кода
zg# fetch http://anton-pribora.ru/files/multi-php-eval-form.tar.bz2

Распаковываем архив
zg# tar xf multi-php-eval-form.tar.bz2

Создаём ссылки разных типов на единый файл запуска
zg# ln -s run.php run.php449
zg# ln -s run.php run.php531rc1
zg# ln -s run.php run.php600
zg# ln -s run.php run.phplocal

Перезапускаем апач
zg# apachectl graceful

Теперь можно зайти на http://ваш_адрес/multi-php/ , там должна отобразиться формочка
с возможностью выбора, в какой версии PHP выполнять код.

01 Декабрь 2012 г.



метки:



Вверх

Подписаться на RSS

  • Новости
  • Статьи
  • Разделы статей

    Наши контакты

    +7 922 292-00-34

    +7(343)361-52-00

    Напишите нам через форму!!!

    Быстрая форма связи с нами

     
    Ваше имя?*
    Как с Вами связаться?*
    Опишите вопрос или сообщение*
    Введите код *


    Знаком (*) выделены обязательные поля.
    Каталог интернет ресурсов - ИнфоПитер
    Наверх

    ООО "Бизнес Технологии"© 2010 г.

    Написать автору

    Карта сайта