Карта сайта
Обслуживание компьютеров, ремонт компьютеров, 1С предприятие, обслуживание серверов,создание сайтов, продвижение сайтов, доработка 1С предприятие
О компании | Статьи | WEB | Установка нескольких независимых версий 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

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

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

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


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

    Антивирусная защита, FireWall
    Антивирусная защита, FireWall

    Заправка Samsung/Xerox
    Заправка Samsung/Xerox

    Заправка картриджей Brother
    Заправка картриджей Brother

    Заправка картриджей Epson/Konica Minolta
    Заправка картриджей Epson/Konica Minolta

    Заправка картриджей HP/Canon black
    Заправка картриджей HP/Canon black

    Заправка картриджей HP/Canon color
    Заправка картриджей HP/Canon color

    Заправка картриджей Lexmark
    Заправка картриджей Lexmark

    Информационные услуги
    Информационные услуги

    Монтаж локальной сети
    Монтаж локальной сети

    Монтирование кабель каналов
    Монтирование кабель каналов

    Настройка внутреннего оборудования
    Настройка внутреннего оборудования

    Настройка работоспособности переферийного оборудования
    Настройка работоспособности переферийного оборудования

    Обслуживание компьютеров
    Обслуживание компьютеров

    Обслуживание серверов
    Обслуживание серверов

    Оптимизация веб сайтов
    Оптимизация веб сайтов

    Разовые услуги
    Разовые услуги

    Ремонт
    Ремонт

    Ремонт оргтехники
    Ремонт оргтехники

    Создание веб (WEB) сайтов
    Создание веб (WEB) сайтов

    Юридические услуги
    Юридические услуги

    Наверх

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

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

    Карта сайта