Как узнать версию PHP
В терминале:
php -vПервая строка ответа — версия, например PHP 8.3.6 (cli) …. Пометка (cli) значит, что это PHP для командной строки.
Версия, на которой работает сайт
У терминала и веб-сервера PHP может быть разным: на сервере бывает установлено несколько версий, а хостинг позволяет выбрать версию для каждого сайта в панели управления. Узнать версию именно сайта можно из самого кода. Создайте в папке сайта файл version.php:
<?php
echo PHP_VERSION;Откройте его в браузере — появится номер вроде 8.3.6. То же значение возвращает функция phpversion().
Полную сводку — версию, php.ini, подключённые расширения и все настройки — показывает phpinfo():
<?php
phpinfo();Удалите файл с phpinfo() сразу после проверки. Страница раскрывает пути к файлам, версии программ и настройки сервера — по ним проще подобрать уязвимость. Не оставляйте её на сайте даже под сложным именем.
Проверка версии в коде
Если код требует определённой версии, проверьте её в начале:
<?php
if (version_compare(PHP_VERSION, '8.1.0', '<')) {
exit('Нужен PHP 8.1 или новее, сейчас ' . PHP_VERSION);
}version_compare сравнивает номера версий по частям: 8.10 новее 8.9, хотя простое сравнение "8.10" < "8.9" дало бы true. Для быстрых сравнений есть и число PHP_VERSION_ID: у версии 8.3.6 оно равно 80306.
В проекте с Composer нужную версию указывают в composer.json — тогда Composer не поставит зависимости на неподходящем PHP:
{
"require": {
"php": ">=8.1"
}
}Несколько версий в Ubuntu и Debian
Установленные версии видны по папкам настроек:
ls /etc/php/Каждая папка (8.1, 8.3 …) — своя версия со своими php.ini. Если версий несколько, команду php по умолчанию переключают так:
sudo update-alternatives --config phpВерсия для сайта при этом не меняется: она задаётся в настройках веб-сервера (модуль Apache или пул PHP-FPM нужной версии).
Какие расширения подключены
php -mКоманда выводит список расширений: mbstring, pdo_mysql, curl и другие. На сайте тот же список есть в выводе phpinfo() и в функции get_loaded_extensions(). Если нужного расширения нет, в Ubuntu и Debian его ставят пакетом php-имя (php-mbstring, php-curl), в Windows — включают строкой extension=имя в php.ini.
Какие версии PHP сейчас поддерживаются и получают исправления безопасности, показывает страница на php.net.