Подключение разных версий PHP (7 и 5) в XAMPP (Windows)

  • DeveloperNotes
  • »
  • XAMPP
  • »
  • Подключение разных версий PHP (7 и 5) в XAMPP (Windows)

У меня возникла необходимость подключить несколько разных версий PHP в XAMPP для Windows. Хотя изначально задача показалась простой, просидел я с этим пару часов точно. Мой XAMPP шел с PHP 7.2, но мне понадобились версии PHP 7.0 и PHP 5.6, т.к. два других проекта просто не стартовали на новой версии. Где-то не хватало расширений, где-то не подходил новый синтаксис.

Мой XAMPP установлен в каталоге C:\xampp, чтобы не надо было прописывать длинные пути. Плюс, гарантированно не было пробелов в путях (иногда проблемы возникают именно из-за этого).

Итак, моя обновленная версия XAMPP от 1 февраля 2018 года использует Apache 2.4.29 и PHP версии 7.2.2, подключаемый как модуль при старте веб-сервера.

Качаем другую версию PHP

Первое, что нам надо сделать, это скачать необходимую сборку PHP. Сразу скажу - есть большая разница, что именно качать. Я порядком устал, пытаясь понять, почему у меня не запускаются те или иные модули.

Если вы загуглите что-то вроде "windows php 5.5", то скорее всего попадаете на эту страницу: https://windows.php.net/downloads/releases/archives/

Казалось бы, все круто, выбирай - не хочу. Но проблема в том, что по какой-то причине модули (extensions) в этих архивах скомпилированы для других версий PHP. И большая часть из них у вас просто напросто не заработает. Например, всем очень нужный curl.

При этом ошибка в логах будет совершенно непонятной и не информативной:

PHP Warning: PHP Startup: in Unknown on line 0

Поэтому я рекомендую качать PHP из другого источника: https://windows.php.net/download/

Здесь PHP был, видимо, собран заново, т.к. судя по news.txt из этого каталога, дата его последнего обновления - аж 01 марта 2018 года.

Обращаю ваше внимание! Нам нужна версия для x86-систем! Несмотря на то, какая операционная система у вас на компьютере, XAMPP собирается с x86-программами (видимо, чтобы гарантированно работать на старых компьютерах).

Устанавливаем новую версию PHP

Итак, вы скачали и разархивировали ваш новый PHP. Кладите его архив в каталог XAMPP, только не заменяйте оригинальный. Например, я положил его "рядом" и назвал в соответствии с его версий:

После этого необходимо зайти в этот каталог и скопировать файл php.ini-development в php.ini. Затем открыть его и изменить опцию extension_dir, чтобы она указывала в каталог с модулями для текущей версии. У меня она выглядит так:

extension_dir = "C:\xampp\php-5.6.34\ext"

Сохраняем и закрываем файл.

Теперь идем в каталог C:\xampp\apache\conf\extra

Тут нас интересует файл httpd-xampp.conf. Именно в нем хранятся настройки PHP, который будет подцеплять Apache. Скопируйте этот файл и эту копию переименуйте в httpd-xampp_php7.2.conf (если у вас была версия 7.2, как у меня).

Нам нужны копии этих конфигов, чтобы быстро переключать сервер на нужную версию PHP!

Теперь откройте огинальный файл (т.к. их два, не страшно что-то испортить) и измените кусок сверху на вот такой:


LoadFile "C:/xampp/php-5.6.34/php5ts.dll"
LoadFile "C:/xampp/php-5.6.34/libpq.dll"
LoadModule php5_module "C:/xampp/php-5.6.34/php5apache2_4.dll"

Также нужно изменить все строки, где встречается путь до старого каталога PHP (как в примере выше) и все упоминания php7_module заменить на php5_module.

В итоге у меня это выглядит вот так:

Пробуем стартануть Apache

Собственно, это всё. Если вы скачали правильную версию PHP и не забыли что-нибудь поменять, попробуйте стартануть Apache. Он должен заработать сразу же. Как у меня:

Надеюсь, все прошло как по маслу. Если нет, попробуйте поэксперементировать с версиями и сборками PHP. Убедиться, что "битность" программы соответствует веб-серверу. В конце-концов, опишите вашу проблему в комментариях, я попытаюсь помочь.

 

Комментарии

  • Сувастьян - 6 months ago
    Какие версии не перепробовал заливать, как тока меняешь "loadfile" грёбаный апач упорно дёргает лапами и отказывается запускаться! Перепробовал всё - не помогает! может чо подскажите??? С уважением Севастьян

Обязательное поле.
Подсказка по Markdown, используется для оформления.

DeveloperNotes.ru © 2018 — 2020