Как выяснить актуальный номер выпуска PHP на сервере

Раздел: Администрирование PHP -> Настройка PHP

Способы определения версии PHP

Как быстро узнать версию PHP из командной строки?

Наиболее эффективный способ для администратора - воспользоваться консольной командой php -v. Она выводит информацию о версии интерпретатора и его сборке.

php -v

Пример вывода:

PHP 8.2.12 (cli) (built: Oct 26 2024 10:00:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies

Эта команда подходит, когда требуется моментально проверить версию, установленную в системе, особенно при работе через SSH или локальный терминал. Результат включает номер версии, тип сборки (cli, cgi, fpm) и дату компиляции.

Возможные проблемы и их решения:

  • Команда не найдена (php: command not found). Причина: PHP не добавлен в переменную окружения PATH либо не установлен. Решение: указать полный путь, например /usr/bin/php -v, или добавить каталог с PHP в PATH.
  • Выводится не та версия (например, более старая). Причина: в PATH первым найден другой экземпляр PHP. Решение: использовать полный путь к нужной бинарной сборке, либо выполнить alias php=/usr/local/php8.2/bin/php.

Как программно получить версию PHP через функцию phpversion()?

Внутри PHP-скриптов можно использовать встроенную функцию phpversion(), которая возвращает строку с номером версии текущего интерпретатора.

<?php
  echo phpversion();
?>

При запуске этого файла на сервере или через консоль (php script.php) будет выведена версия, например 8.2.12. Способ применяется в скриптах для автоматической проверки совместимости или логирования. Также можно получить версию конкретного расширения, передав его имя: phpversion('mbstring').

Типичные ошибки:

  • Вызов функции без параметров возвращает только базовую версию, без деталей сборки. Для полной информации нужно использовать phpinfo().
  • Если расширение не загружено, phpversion('extension') возвращает false или пустую строку - требуется предварительная проверка.

Как получить полную информацию о версии через phpinfo()?

Функция phpinfo() выводит подробную страницу со всеми настройками PHP, включая версию, загруженные расширения, переменные окружения и конфигурацию сервера.

<?php
  phpinfo();
?>

После открытия этого файла в браузере отображается таблица с параметрами. В первой секции указана версия PHP, билд, дата сборки и архитектура. Способ удобен для диагностики и проверки корректности установки расширений. Функция может быть отключена в php.ini директивой disable_functions.

Возможные сложности:

  • Если phpinfo() выводит пустую страницу или приводит к ошибке, значит функция заблокирована. Решение: проверить php.ini и убрать phpinfo из списка disable_functions.
  • В консольном режиме вывод очень объёмный. Упростить поиск можно командой php -i | grep -i version.

Как использовать предопределённую константу PHP_VERSION?

PHP предоставляет константу PHP_VERSION, которая содержит строку с номером версии. Она доступна без вызова функций и подходит для быстрых проверок.

<?php
  echo PHP_VERSION;
?>

Результат: 8.2.12. Константа удобна в условных конструкциях для проверки минимальной версии, например:

if (PHP_VERSION_ID >= 80100) {
    // код для PHP 8.1 и выше
}

PHP_VERSION_ID (например, 80212) - целочисленное представление, упрощающее численные сравнения.

Примечание:

Константа отражает версию только того интерпретатора, который выполняется в данный момент. В случае разных SAPI (CLI, Apache mod_php, FPM) значения могут отличаться.

Как проверить версию с помощью команды php -i?

Команда php -i выводит ту же информацию, что и phpinfo(), но в консоль. Чтобы извлечь только строку с версией, используется grep.

php -i | grep -i "PHP Version"

Вывод:

PHP Version => 8.2.12

Способ полезен при автоматизации (например, в скриптах CI/CD) и когда требуется быстро получить версию в безбраузерной среде. Параметр -i делает поиск регистронезависимым.

Возможные проблемы:

Если вывод команды пустой - PHP не установлен или не в PATH. Также grep может не найти строку, если локаль отличается (используйте LC_ALL=C php -i | grep ...).

Как сравнить версию PHP с требуемой?

Для проверки совместимости приложения или скрипта используется функция version_compare(). Она принимает две версии и оператор сравнения.

if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
    echo 'Версия PHP 8.0 или выше';
} else {
    echo 'Требуется обновление';
}

Результат при PHP 8.2:

Версия PHP 8.0 или выше

Функция корректно обрабатывает номера с разным количеством сегментов (например, '7.4' и '7.4.33'). Используется в инсталляторах, проверках системных требований и условном включении функционала.

Распространённые ошибки:

  • Неправильный порядок аргументов: сначала фактическая версия, затем сравниваемая.
  • Неверное указание оператора: следует использовать строки '>=', '<', '==' и т.д.

Как определить версию PHP, если нет доступа к командной строке?

Если доступна только веб-панель или FTP, создаётся файл ver.php с простым скриптом и открывается в браузере.

<?php echo phpversion(); ?>

При обращении к файлу, например http://example.com/ver.php, отобразится номер версии. Аналогично можно вывести полную информацию через <?php phpinfo(); ?>. Метод подходит для виртуального хостинга и случаев, когда пользователь не имеет SSH-доступа.

Меры предосторожности:

  • Не рекомендуется оставлять файл с phpinfo() в публичной папке после диагностики, так как он раскрывает детали конфигурации сервера.
  • Некоторые хостинг-провайдеры блокируют выполнение phpinfo() из соображений безопасности. В этом случае пригодится простая проверка через echo phpversion().

Расширенные примеры и нетипичные сценарии

1. Получение версии всех загруженных расширений

Пример
<?php
foreach (get_loaded_extensions() as $ext) {
    echo "$ext: " . phpversion($ext) . "\n";
}
?>

Результат (фрагмент):

Core: 8.2.12
date: 8.2.12
json: 8.2.12
mbstring: 8.2.12
pcre: 8.2.12
...

Позволяет убедиться, что все необходимые расширения имеют одинаковую версию. Если расширение не загружено, phpversion() вернёт false.

2. Использование PHP_VERSION_ID для проверки минимальной версии

Пример
if (PHP_VERSION_ID >= 80000) {
    // используем named arguments
    echo "PHP 8.0+";
}

Константа PHP_VERSION_ID формируется как major*10000 + minor*100 + release. Например, версии 8.2.12 соответствует 80212. Сравнение чисел надёжнее строк.

3. Определение версии из файла phpinfo через командную строку с форматированием

Пример
php -i | awk '/^PHP Version =>/{print $4}'

Вывод:

8.2.12

Если в строке есть двоеточие или знак равенства, awk позволяет извлечь четвёртое поле. Альтернатива с sed:

Пример
php -i | sed -n 's/^PHP Version => //p'

4. Получение версии PHP внутри Docker-контейнера

Пример
docker exec container_name php -v

Или с помощью простого скрипта внутри контейнера:

Пример
docker run --rm php:8.2-cli php -r 'echo phpversion();'

Результат: 8.2.12. Позволяет проверить версию без входа в контейнер.

5. Проверка версии PHP в файле composer.json

Пример
composer show --platform-php

Вывод:

php 8.2.12

Если проект использует Composer, эта команда показывает версию PHP, установленную в системе, а также требуемые расширения.

6. Сравнение версий с использованием version_compare и пользовательских версий

Пример
$required = '7.4.33';
$actual = phpversion();
if (version_compare($actual, $required, '>=')) {
    echo "Система соответствует требованиям ($actual >= $required)";
} else {
    echo "Требуется обновление до $required (текущая: $actual)";
}

При PHP 8.2.12 вывод:

Система соответствует требованиям (8.2.12 >= 7.4.33)

7. Получение версии через php -r без создания файла

Пример
php -r 'echo phpversion();'

Вывод: 8.2.12. Удобно в скриптах оболочки.

8. Использование постоянной PHP_EXTRA_VERSION (если доступна)

В некоторых сборках может быть определена константа PHP_EXTRA_VERSION (например, для бета-версий).

Пример
echo PHP_EXTRA_VERSION; // может вывести '-dev' или '-RC1'

9. Проверка версии через файл php.ini

В php.ini нет прямого указания версии, но можно прочитать информацию из комментариев (обычно в первой строке).

Пример
head -1 /etc/php/8.2/cli/php.ini

Вывод:

; Configuration file for PHP 8.2.12

10. Различие версий для разных SAPI

Веб-сервер может использовать модуль PHP, отличный от CLI. Чтобы узнать версию модуля, создайте файл info.php с phpinfo() и найдите в секции Server API. Если это Apache, версия указана как PHP Version. В CLI выполните php -v. Версии могут не совпадать, если установлены разные пакеты (например, php8.2-cli и libapache2-mod-php8.2).

- Localhost php (настройка локального сервера php)
- Php windows (php на windows)
- Allow php (разрешить php на сервере)
- Index php page info (страница phpinfo())
- Change php (изменение php)
- битрикс restore php (восстановление php в битрикс)
- изменить настройки php (изменение настроек php)
- Debian php (установка php на debian)
- Php ubuntu (php на ubuntu)
- Php ini memory (настройка memory_limit в php)
- Php post size (размер post данных в php)
- версия php (определение версии php)
- Php ini (настройка php.ini)
- Php ini upload (настройка загрузки файлов в php (upload_max_filesize, post_max_size))
- Php ini set error (настройка отображения ошибок в php (display_errors, error_reporting))
- Php ini linux (настройка php.ini в linux/ubuntu)

Определение версии PHP - comments

En
версия php (php)