XAMPP — это связка PHP-Apache-MySQL, а так же Perl, ProFTPd, phpMyAdmin и много другого в одной готовой связке. У него есть свои плюсы и свои минусы, и информацией по исправлению одного из таких недостатков я хочу поделиться в этом посте.
«Недостаток» состоит в том, что разработчики стараются включить в паке скорее свежие, нежли стабильные версии софта, которые порою еще не поддерживаются сторонними расширениями. Для меня камнем преткновения стали 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 и оставшемся до сих пор, хотя и невостребованным.
Пошагово:
  1. Смотрим версию PHP в нашей установке. Ниже я буду считать, что она равна 5.3.1
  2. Скачиваем дистрибутив XAMPP 1.7.1 — это последняя версия, в которой был PHP 5.2
  3. Из скачанного архива копируем файлы lampp/bin/php*5.2.9 в /opt/lampp/bin/
  4. В той же папке все симлинки, указывающие на файлы php*5.3.1 перенаправляем на соответствующие файлы версии 5.2.9
  5. Файл /opt/lampp/modules/libphp5.so переименовываем в libphp5.so-5.3.1
  6. Снова из архива копируем файл lampp/modules/linphp5.so в файл /opt/lampp/modules/libphp5.so-5.2.9
  7. Создаем симлинк libphp5.so на libphp5.so-5.2.9
  8. На этом этапе уже можно перезапускать веб-сервер и пользоваться версией PHP 5.2.9, но мы пойдем дальше и устроим переключение версий
  9. Открываем файл /opt/lampp/share/lampp/activatephp
  10. Находим в нем строчки 
    1. ln -s phpextdist{-$VERSION,}
    2. ln -s php-config{-$VERSION,}
  11. После них добавляем
    1. cd /opt/lampp/modules
    2. rm libphp5.so 2> /dev/null
    3. ln -s libphp5.so{-$VERSION,}
    4.  
  12. Открываем файл /opt/lampp/lampp
  13. Находим строчки 
    1.         "php5")
    2.                 /opt/lampp/share/lampp/activatephp 5.3.1
    3.                 ;;
  14. После добавляем
    1.         "php5.2")
    2.                 /opt/lampp/share/lampp/activatephp 5.2.9
    3.                 ;;


Все! Теперь мы можем набирать в консоли /opt/lampp/lampp php5.2 и проверять phpinfo ().

Ну и пара замечаний напоследок. Во-первых, в процессе гугления я встречал упоминнания, что людям удавалось подсунуть даже более свежие версии PHP 5.2, чем те, что были в XAMPP годичной давности, взяв их из репозитория дистрибутива. Я достоверность не проверял за неактуальностью для меня, да и сомневаюсь, что это корректно, поскольку пути поиска настроек и расширений в XAMPP свои.
Во-вторых, можно попытаться собрать нужную версию самому, воспользовавшись Development Package с сайта XAMPP и исходниками PHP.

P.S. Я оставлю в стороне преимущества и недостатки XAMPP по сравнению с ручной установкой связки LAMP из репозитория — здесь каждый выбирает из собственных нужд и предпочтений.
P. P. S. Сомневаюсь, в какой блог поместить, поэтому пока поместил в PHP.