Глиф Учебники

Как узнать версию PHP

Справочник · PHP · 2 минуты чтения

В терминале:

Bash
php -v

Первая строка ответа — версия, например PHP 8.3.6 (cli) …. Пометка (cli) значит, что это PHP для командной строки.

Версия, на которой работает сайт

У терминала и веб-сервера PHP может быть разным: на сервере бывает установлено несколько версий, а хостинг позволяет выбрать версию для каждого сайта в панели управления. Узнать версию именно сайта можно из самого кода. Создайте в папке сайта файл version.php:

PHP
<?php
echo PHP_VERSION;

Откройте его в браузере — появится номер вроде 8.3.6. То же значение возвращает функция phpversion().

Полную сводку — версию, php.ini, подключённые расширения и все настройки — показывает phpinfo():

PHP
<?php
phpinfo();

Удалите файл с phpinfo() сразу после проверки. Страница раскрывает пути к файлам, версии программ и настройки сервера — по ним проще подобрать уязвимость. Не оставляйте её на сайте даже под сложным именем.

Проверка версии в коде

Если код требует определённой версии, проверьте её в начале:

PHP
<?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:

JSON
{
    "require": {
        "php": ">=8.1"
    }
}

Несколько версий в Ubuntu и Debian

Установленные версии видны по папкам настроек:

Bash
ls /etc/php/

Каждая папка (8.1, 8.3 …) — своя версия со своими php.ini. Если версий несколько, команду php по умолчанию переключают так:

Bash
sudo update-alternatives --config php

Версия для сайта при этом не меняется: она задаётся в настройках веб-сервера (модуль Apache или пул PHP-FPM нужной версии).

Какие расширения подключены

Bash
php -m

Команда выводит список расширений: mbstring, pdo_mysql, curl и другие. На сайте тот же список есть в выводе phpinfo() и в функции get_loaded_extensions(). Если нужного расширения нет, в Ubuntu и Debian его ставят пакетом php-имя (php-mbstring, php-curl), в Windows — включают строкой extension=имя в php.ini.

Какие версии PHP сейчас поддерживаются и получают исправления безопасности, показывает страница на php.net.