![](https://habrastorage.org/getpro/habr/post_images/251/a21/b16/251a21b162c5d24d5a692b186c579461.gif)
«Недостаток» состоит в том, что разработчики стараются включить в паке скорее свежие, нежли стабильные версии софта, которые порою еще не поддерживаются сторонними расширениями. Для меня камнем преткновения стали PHP 5.3, присутствующий в XAMPP с версии 1.7.2, и Zend Optimizer, которого для PHP 5.3 еще нет (хотя и давно обещали).
Логика и Гугль подсказали два варианта решения проблемы — даунгрейд всего XAMPP до версии 1.7.1 или даунгрейд PHP до 5.2. Второй вариант я счел более предпочтительным, поскольку он оставлял более свежие версии всего остального софта, да и показался менее хлопотным. Исходный вектор решения был найден на stackoverflow и дополнен самостоятельно для получения возможности переключаться с PHP 5.3 на 5.2 и обратно.
Решение
Мною был собран небольшой архив, содержащий все необходимое для скрещивания двух версий PHP в XAMPP 1.7.3a и измененные скрипты, позволяющие переключать версии.
Скачать архив (Яндекс.Диск)
Установка сводится к простой распаковке архива поверх вашей установки XAMPP и перезапуске веб-сервера. Функция переключения между версиями выделена в отдельную часть и лежит в папке архива contrib. Там находятся уже измененные файлы и patch для тех, кто уже модифицировал стандартные скрипты для своих нужд.
DIY или общая инструкция для других версий
…а так же для тех, кому просто интересно, как это работает.
Решение основано на механизме, служившем в XAMPP 1.6.* для переключения PHP4 и PHP5 и оставшемся до сих пор, хотя и невостребованным.
Пошагово:
- Смотрим версию PHP в нашей установке. Ниже я буду считать, что она равна 5.3.1
- Скачиваем дистрибутив XAMPP 1.7.1 — это последняя версия, в которой был PHP 5.2
- Из скачанного архива копируем файлы lampp/bin/php*5.2.9 в /opt/lampp/bin/
- В той же папке все симлинки, указывающие на файлы php*5.3.1 перенаправляем на соответствующие файлы версии 5.2.9
- Файл /opt/lampp/modules/libphp5.so переименовываем в libphp5.so-5.3.1
- Снова из архива копируем файл lampp/modules/linphp5.so в файл /opt/lampp/modules/libphp5.so-5.2.9
- Создаем симлинк libphp5.so на libphp5.so-5.2.9
- На этом этапе уже можно перезапускать веб-сервер и пользоваться версией PHP 5.2.9, но мы пойдем дальше и устроим переключение версий
- Открываем файл /opt/lampp/share/lampp/activatephp
- Находим в нем строчки
- ln -s phpextdist{-$VERSION,}
- ln -s php-config{-$VERSION,}
- После них добавляем
- cd /opt/lampp/modules
- rm libphp5.so 2> /dev/null
- ln -s libphp5.so{-$VERSION,}
- Открываем файл /opt/lampp/lampp
- Находим строчки
- "php5")
- /opt/lampp/share/lampp/activatephp 5.3.1
- ;;
- После добавляем
- "php5.2")
- /opt/lampp/share/lampp/activatephp 5.2.9
- ;;
Все! Теперь мы можем набирать в консоли /opt/lampp/lampp php5.2 и проверять phpinfo ().
Ну и пара замечаний напоследок. Во-первых, в процессе гугления я встречал упоминнания, что людям удавалось подсунуть даже более свежие версии PHP 5.2, чем те, что были в XAMPP годичной давности, взяв их из репозитория дистрибутива. Я достоверность не проверял за неактуальностью для меня, да и сомневаюсь, что это корректно, поскольку пути поиска настроек и расширений в XAMPP свои.
Во-вторых, можно попытаться собрать нужную версию самому, воспользовавшись Development Package с сайта XAMPP и исходниками PHP.
P.S. Я оставлю в стороне преимущества и недостатки XAMPP по сравнению с ручной установкой связки LAMP из репозитория — здесь каждый выбирает из собственных нужд и предпочтений.
P. P. S. Сомневаюсь, в какой блог поместить, поэтому пока поместил в PHP.