Подключение разных версий 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. Убедиться, что "битность" программы соответствует веб-серверу. В конце-концов, опишите вашу проблему в комментариях, я попытаюсь помочь.
Комментарии