Как стать автором
Обновить

Добавление поддержки PHP 5.2 в XAMPP

Время на прочтение4 мин
Количество просмотров9.7K
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.
Теги:
Хабы:
Всего голосов 16: ↑9 и ↓7+2
Комментарии10

Публикации

Истории

Работа

PHP программист
118 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн