Boroda aka Hamster (fantaseour) wrote,
Boroda aka Hamster
fantaseour

  • Music:

Apache php4+php5 на девелоперской машине

В связи с перестановкой винчестера на девелоперском ноуте кроме всего прочего переставлял веб-серверный софт — обычно это хороший повод обновить его. Поскольку одной из ближайших задач является миграция на 5-ю версию php хотелось иметь если не две версии php одновременно, то хотя бы удобный переключатель между ними.


Приборы и материалы: WinXP Pro, Апач 2.0.59, php 4-5, утилита ln для создания хардлинка, директива Include в файле конфига Apache

Step by step:
1. Поставить Апач 2.0.59 (под самый новый апач там какие-то проблемы найти собраные модули пхп, потому ну его с проблемами)
2. Скачать последние релизные ветки php 4 и 5
3. mkdir C:\phpgroup
mkdir C:\phpgroup\php4
mkdir C:\phpgroup\php5

4. Распаковать php 5 в C:\phpgroup\php5
5. Распаковать php4 в C:\phpgroup\php4\distrib
Для php 4, из distrib в c:\phpgroup\php4:
distrib\cli\php.exe
distrib\dlls\*.*
distrib\sapi\php4apache2.dll
distrib\php4ts.dll

6. добавить в System Path (MyComputer->System Properties->Advanced->Environment Variables->System->Path)
C:\phpgroup\php;

После этого компутер недо перегрузить :)
7. можно сделать общий php.ini, тогда его надо положить куда-нибудь в c:\phpgroup\ini, и именно эту директорию скормить апачу, как PHPIniDir. Я же предпочел в php4 и php5 иметь отдельный конфиг. Выбираем как больше нравится и создаем ini файлы из заготовок. Внутри не забываем прописать
extension_dir = "c:/phpgroup/php/"

8. Идем в "там, где встал апач\conf"
создаем два файла:
httpd_php4.conf:
LoadModule php4_module "c:/phpgroup/php/php4apache2.dll"

httpd_php5.conf:
LoadModule php4_module "c:/phpgroup/php/php5apache2.dll"

9. В httpd.conf пишем:
Include conf/httpd_php.conf
PHPIniDir "C:/phpgroup/php"
AddType application/x-httpd-php .php

или PHPIniDir "C:/phpgroup/ini", если Вы решили использовать один ini файл на двоих

10. делаем переключатель:
Должна же быть какая-то папка для консольных инструментов, чтобы путь к ней был в системном пути? Если нет у вас такого делаем:
mkdir c:\tools
И добавляем ее в системный путь (MyComputer->System Properties->Advanced->Environment Variables->System->Path),
не забыть перезагрузиться.

В эту директорию кладем утилиты ln,rj и создаем батник-переключатель
phpsw.bat (обратите внимание на то, чтобы пути были правильные):
@echo off
if "%1"=="" goto ver
if %1==4 goto stopservice
if %1==5 goto stopservice
echo Wrong parameter!
goto end

:ver
php -v
goto end

:stopservice
net stop apache2
if exist c:\phpgroup\php rj c:\phpgroup\php
if exist c:\phpgroup\php rmdir c:\phpgroup\php
if exist "c:\Program Files\Apache Group\Apache2\conf\httpd_php.conf" del "c:\Program Files\Apache Group\Apache2\conf\httpd_php.conf"
echo Links removed
if %1==4 goto php4
if %1==5 goto php5

:php4
ln c:\phpgroup\php4 c:\phpgroup\php
ln "c:\Program Files\Apache Group\Apache2\conf\httpd_php4.conf" "c:\Program Files\Apache Group\Apache2\conf\httpd_php.conf"
goto runservice

:php5
ln c:\phpgroup\php5 c:\phpgroup\php
ln "c:\Program Files\Apache Group\Apache2\conf\httpd_php5.conf" "c:\Program Files\Apache Group\Apache2\conf\httpd_php.conf"
goto runservice

:runservice
echo New links created
net start apache2
php -v

:end



11. теперь можно запустить
phpsw 4 (phpsw 5)

по идее все должно работать.
Текущую версию можно проверить запустив наш переключатель без параметров
phpsw

Переключается легко и удобно:
phpsw номер_версии.

Дальше можно вынести виртуальные хосты в отдельный файл, чтобы не мешались в основном конфиге и легко переносились при переезде. Но это уже детали, на ваш вкус.

Почитать:
Установка php4 и php5 на один Apache
DOS 7 Batch Programming
NTFS Hard Links, Directory Junctions, and Windows Shortcuts
Tags: development
Subscribe

  • Так. Чуть не бросил дневник :)

    Ну вот, хотел не бросать и опять сюда не пишу :( Потому, что в будние дни сил нет писать, а в выходные вот то у меня ДР, то у пасынка. То просто…

  • 46

    Дня рожденья пост. Ну ничего, мы еще позажигаем :)

  • Завтра в офис

    Завтра выхожу на работу в офис. Будет, как первый день, поскольку у меня места рабочего нет пока -- ноутбук есть, а места нет. Выходящие либо сдают…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments

  • Так. Чуть не бросил дневник :)

    Ну вот, хотел не бросать и опять сюда не пишу :( Потому, что в будние дни сил нет писать, а в выходные вот то у меня ДР, то у пасынка. То просто…

  • 46

    Дня рожденья пост. Ну ничего, мы еще позажигаем :)

  • Завтра в офис

    Завтра выхожу на работу в офис. Будет, как первый день, поскольку у меня места рабочего нет пока -- ноутбук есть, а места нет. Выходящие либо сдают…