- Подключение разных версий PHP (7 и 5) в XAMPP (Windows)
- Качаем другую версию PHP
- Устанавливаем новую версию PHP
- Пробуем стартануть Apache
- Как обновить PHP сайта и зачем это нужно
- Актуальная версия PHP
- Вот неполный список возможностей PHP 7:
- Как обновить PHP на Windows
- Зачем обновлять, если все работает
- Обновлять или не обновлять: вот в чем вопрос
- Заключение
- Как изменить версию PHP на хостинге
- Какие версии PHP сейчас актуальны и зачем менять
- Изменение версии PHP в коммерческих панелях управления
- cPanel
- ISPManager
- Parallels Plesk
- Изменение версии PHP на популярных хостингах с собственной панелью
- TimeWeb
- Beget
- SprintHost
- Webhost1
- HostLand
- Изменение текущего PHP на VPS/VDS-сервере в консоли
- Что это значит и зачем нужно
- Как изменить
- Как изменить версию php в консоли
Подключение разных версий 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 из другого источника: https://windows.php.net/download/
Здесь PHP был, видимо, собран заново, т.к. судя по news.txt из этого каталога, дата его последнего обновления — аж 01 марта 2018 года.
Обращаю ваше внимание! Нам нужна версия для x86-систем! Несмотря на то, какая операционная система у вас на компьютере, XAMPP собирается с x86-программами (видимо, чтобы гарантированно работать на старых компьютерах).
Устанавливаем новую версию PHP
Итак, вы скачали и разархивировали ваш новый PHP. Кладите его архив в каталог XAMPP, только не заменяйте оригинальный. Например, я положил его «рядом» и назвал в соответствии с его версий:
После этого необходимо зайти в этот каталог и скопировать файл php.ini-development в php.ini. Затем открыть его и изменить опцию extension_dir, чтобы она указывала в каталог с модулями для текущей версии. У меня она выглядит так:
Сохраняем и закрываем файл.
Теперь идем в каталог C:\xampp\apache\conf\extra
Тут нас интересует файл httpd-xampp.conf. Именно в нем хранятся настройки PHP, который будет подцеплять Apache. Скопируйте этот файл и эту копию переименуйте в httpd-xampp_php7.2.conf (если у вас была версия 7.2, как у меня).
Нам нужны копии этих конфигов, чтобы быстро переключать сервер на нужную версию PHP!
Теперь откройте огинальный файл (т.к. их два, не страшно что-то испортить) и измените кусок сверху на вот такой:
Также нужно изменить все строки, где встречается путь до старого каталога PHP (как в примере выше) и все упоминания php7_module заменить на php5_module.
В итоге у меня это выглядит вот так:
Пробуем стартануть Apache
Собственно, это всё. Если вы скачали правильную версию PHP и не забыли что-нибудь поменять, попробуйте стартануть Apache. Он должен заработать сразу же. Как у меня:
Надеюсь, все прошло как по маслу. Если нет, попробуйте поэксперементировать с версиями и сборками PHP. Убедиться, что «битность» программы соответствует веб-серверу. В конце-концов, опишите вашу проблему в комментариях, я попытаюсь помочь.
Как обновить PHP сайта и зачем это нужно
Лучшее — враг хорошего? Мы рассмотрели, как обновить версию PHP, на которой работает ваш сайт, и для чего это нужно.
Актуальная версия PHP
Сейчас проходит бета-тестирование PHP 7.3 — последний релиз в этом семействе. Актуальной на сегодняшний момент считается 7.2, которая превосходит в скорости и функциональности все прошлые версии.
Вот неполный список возможностей PHP 7:
- типы скалярных параметров и подсказки (hints) по возвращаемым типам;
- две новые функции CSPRNG;
- анонимные классы;
- оператор return в генераторах и другие обновления в них;
- улучшение функции assert() с сохранением обратной совместимости.
Как обновить PHP на Windows
Здесь все очень просто и прозаично:
1. Скачиваем последнюю версию PHP
2. Удаляем старую
3. Устанавливаем новую.
4. Прописываем заново настройки в Apache и PHP.
Но прежде чем обновлять, нужно внимательно изучить раздел Appendices в документации к новой версии. В нем описывается устаревший функционал, который больше не применяется в языке. Новые версии не поддерживают старый код: особенно трудна миграция с пятой на седьмую, у которой очень слабая обратная совместимость.
Если разработчик использует неподдерживаемые функции, то кусок кода, в котором они есть, просто не заработает. Поэтому перед обновлением нужно серьезно проанализировать этот раздел и в соответствии с ним — свой код.
Зачем обновлять, если все работает
Резонный вопрос, которым задаются многие программисты. Если не обновлять язык на собственном сервере, вы просто лишаете себя преимуществ и возможностей очередной версии.
В каждом релизе PHP появляются новые фишки и функции, а также закрываются уязвимости. Например, is_countable позволяет определить тип переменной — перечисляемый или нет. Это очень удобная возможность для веб-разработчиков. Сейчас приходится использовать для определения типа переменной if, а в PHP 7.3 это можно будет сделать одной функцией.
Однако обновление версии PHP — это болезненный процесс для команды разработки, означающий многодневный рефакторинг кода и исправление ошибок — всё из-за проблем с обратной совместимостью в этом языке. Ранее установленные плагины и скрипты могут конфликтовать с новой версией, работать некорректно или не подключаться вообще, добавляя головной боли разработчикам.
Веб-хостинг Plesk в своем блоге на Хабре выложил статистику, какие версии PHP используют их пользователи на своих сайтах. В начале марта2018 года ситуация выглядела вот так:
Как видите, самую последнюю версию используют очень немногие. Консервативное большинство остается верным надежным технологиям — от PHP 5.1 до 5.6.
Обновлять или не обновлять: вот в чем вопрос
Мы скажем так: Святого Грааля в проблеме обновления нет. Подходить к нему нужно с позиции целесообразности. Большой проект перевести на PHP7 будет сложно: придется рефакторить всю кодовую базу, но ради чего? Любое изменение должно исходить из рабочей потребности.
Если проблем с поддержанием работоспособности сайта и скоростью загрузки нет, то переход на более современную версию — лишняя трата времени и средств. Если разработчикам всего хватает в функционале — в обновлении тоже нет смысла. Переход на новую версию не должен обосновываться тем, что это круто, модно и молодежно.
На старых сайтах, где сплошной легаси Legacy code Устаревшая часть кодовой базы проекта. , разработчикам вообще страшно что-либо менять, так как велик риск все случайно поломать. Проект стабильно работает, а значит, изменения ни к чему. Зато разработку новых сайтов однозначно нужно начинать с установки последней версии языка.
Заключение
Мы рассказали, как обновить PHP, и коснулись некоторых важных нюансов. Если вы хотите знать больше и стать высокооплачиваемым специалистом, советуем пройти наш курс «PHP-разработчик от0 до PRO». Из него вы узнаете все необходимое для профессиональной работы с этим языком.
Как изменить версию PHP на хостинге
Изменение текущей версии PHP может понадобиться в некоторых случаях. Ниже разберем, как поменять версию, когда это нужно, и какую именно версию PHP лучше выбрать. Также разберем, как менять версию интерпретатора в коммерческих панелях управления (cPanel, ISPmanager и Plesk), и на самых популярных хостингах с панелями собственной разработки.
Какие версии PHP сейчас актуальны и зачем менять
На данный момент (2018 год) актуальны следующие версии интерпретатора PHP:
- PHP 5.3 (версия уже не новая, но все еще актуальная)
- PHP 5.4 (наиболее распространенная версия пятой ветки, часто является минимальным требованием для многих скриптов)
- PHP 5.6 (последняя стабильная версия пятого поколения, имеет ряд нововведений по сравнению с 5.4)
- PHP 7.0 (первая стабильная версия 7-й ветки, имеет смысл использовать, только если нет более свежего, или ваше приложение привязано к конкретным особенностям этой версии)
- PHP 7.1 (более свежая версия, на многих хостингах, максимум, что доступно)
- PHP 7.2 (последняя стабильная версия)
Переходить на 7-ю ветку PHP однозначно стоит, если используете современную CMS (например, Drupal 8) или framework (например, Laravel 5.5 и выше). Также многие даже не очень свежие скрипты и приложения могут требовать минимум php5.4.
Еще одной причиной перехода на последние версии PHP может быть, написание или использование CLI (консольных) php-приложений, когда нет необходимости поддерживать обратную совместимость.
Изменение версии PHP в коммерческих панелях управления
cPanel
В панели cPanel всё очень просто (не зря большинство хостеров в мире используют именно ее). После логина, ищем раздел «Programming», там кликаем на иконку «PHP Config», в открывшемся окне выбираем нужную версию и сохраняем.
ISPManager
В панели ispmanager после входа идем в боковое меню, раздел «WWW». Далее выбираем пункт «WWW-Домены», отмечаем нужный нам домен и нажимаем кнопку «Изменить» сверху. На открывшейся странице ищем раздел «Дополнительные возможности», там строка «Версия PHP». И через выпадающий список задаем нужную версию. Для сохранения изменения не забудьте нажать кнопку «ОК». Для примера была взята панель хостинга SmartApe.
Parallels Plesk
Переходим в раздел «Сайты и домены». Далее «Смена версии PHP», и выбираем нужную версию.
Изменение версии PHP на популярных хостингах с собственной панелью
TimeWeb
Перейти на Таймвебе «Главное меню (боковое) – Сайты – Выбрать нужный сайт – нажать зеленую кнопку с шестеренкой напротив сайта – в раскрывающемся списке выбрать версию PHP».
На данный момент доступны следующие версии: 5.3, 5.4, 5.6, 7.0, 7.1. Рекомендуем выбирать или 5.6 или 7.1.
Beget
С главного экрана панели управления перейти в раздел «Сайты». Напротив нужного сайта есть сиреневый значок с надписью «PHP» — нажать на него. В раскрывающемся списке выберите необходимую версию.
У Бегета доступны версии PHP: 5.2, 5.3, 5.6, 7.0, 7.1, 7.2. Рекомендуем использовать или php5.6, или php7.2.
Обратите внимание, у этого хостера можно не только выбрать версию php для сайта, но и прямо из панели (в том же окне, что и настройка версии) можно задать необходимые директивы для файла php.ini. В некоторых случаях это может быть очень полезно.
SprintHost
Чтобы сменить версию PHP у компании СпринтХост, в главном боковом меню перейдите в раздел «Сайты и домены – Управление сайтами». Выберите нужные вам домены (нужно установить галочку) и из формы под списком доменов выберите нужную версию PHP. Нажмите кнопку «Применить для сохранения».
SprintHost предоставляет следующие версии интерпретатора: 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 – завидное разнообразие! К выбору рекомендуем 5.6 или 7.2
Webhost1
Для управления версией PHP у ВебХост1 нужно войти в «хостинг-панель» (да-да, у них раздельные панели управления хостингом и биллингом!). В панели управления перейти в раздел «Домены». В таблице с перечнем ваших доменов, в строке с нужным вам найдите ссылку «Настройки» и нажмите её. На появившейся странице выберите нужную версию PHP и нажмите кнопку «Изменить настройки».
У Webhost1 доступны всего 3 версии PHP: 5.3, 5.6 и 7.1. По умолчанию на новых аккаунтах будет использоваться php 7.1.
HostLand
В Хостлэнде для смены PHP в главном меню выберите раздел «Домены». Затем в выпадающем списке напротив нужного домена установите нужную версию языка и нажмите рядом синюю кнопку с дискеткой для сохранения настроек.
Hostland позволяет выбрать PHP 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2. Мы рекомендуем использовать версии 5.6 и 7.2.
Изменение текущего PHP на VPS/VDS-сервере в консоли
Что это значит и зачем нужно
Иногда бывают ситуации, когда для выполнения консольных php-команд вам нужна версия PHP отлична от текущей.
Проверить, какие версии установлены на сервере можно так:
Чтобы узнать текущую консольную (cli) версию используем php -v:
Тут видно, что на данный момент у нас текущая версия php для консоли 5.6.
Проверяем путь запуска cli-php:
Текущая дефолтная версия задается через /usr/local/bin/php – это символическая ссылка. Узнать на какую именно версию ведет эта ссылка просто:
Как изменить
Предположим, что нам нужно изменить версию 5.6 на 7.2. Для этого нам нужно просто переназначить ссылку /usr/bin/php на /opt/php72/bin/php. Делается это командой:
Как изменить версию php в консоли
Если у вас установлено несколько версий php в системе, то при вызове команды php в консоли, будет использоваться одна из них. Иногда необходимо для каких-то скриптов или сервисов управлять версией php в консоли. Я расскажу, как ее изменить.
У меня на сервере Debian установлены 2 версии php — 5.6 и 7.0. Для начала проверим, какая версия используется в данный момент:
Посмотрим, где располагается сам бинарник php:
Оказывается, что /usr/bin/php является символьной ссылкой. Посмотрим, куда она ведет:
Это еще одна символьная ссылка. Смотрим, куда ведет она:
На седьмую версию php. Заменим ее на 5.6, которая у меня установлена по адресу /usr/local/bin/php. Редактируем символьную ссылку:
Проверяем текущую версию php в консоли:
Все получилось. Теперь в консоли по-умолчанию будет использоваться нужная версия php. Можно проверять скрипты, не указывая полный путь к нужной версии.
Можно было поступить и по-другому. При вызове php в консоли, имя проверяется в переменной $PATH. Посмотреть ее значения можно командой:
Директории проверяются в том порядке, как они перечислены. Где будет найдено первое совпадение, тот файл и будет использоваться. В моем случае директория /usr/bin, где жила символьная ссылка на php7.0 стоит раньше, чем /usr/local/bin, где расположена php5.6. Можно было просто поменять местами эти директории в PATH и версия по-умолчанию станет 5.6, так как ее бинарник php будет найден раньше.
Более гибко управлять версиями php в системе можно с помощью программы update-alternatives. Она может делать в том числе и то, что мы сейчас проделали, только автоматически, в зависимости от своих настроек. С ее помощью можно более гибко управлять версиями, задавать приоритеты использования той или иной версии, быстро их переключать в полуавтоматическом режиме.
Мне все это не надо, поэтому не стал сильно разбираться с ее работой, только познакомился с возможностями. Рассказываю о ней в качестве наводки для тех, кому захочется более подробно разобраться в этой теме. Она может быть актуальна, если у вас установлена какая-нибудь панель управления хостингом с разными версиями php. Например — plesk.