Установленная версия PHP: как её определить и проверить

Раздел: Администрирование PHP -> Версия PHP

Основной способ: использование встроенных средств PHP

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

Самый простой и надёжный метод – применить константу PHP_VERSION или функцию phpversion(). Эти средства всегда доступны, если интерпретатор PHP работает. Константа возвращает строку с номером версии, а функция может также указать версию конкретного расширения.

<?php
echo PHP_VERSION; // выведет, например, 8.2.12
?>

узнать какой php (узнать версию php)

8.2.12

Пояснение шага: разместите этот код в файле .php на вашем сервере или выполните через eval. Результат – номер версии в виде строки. Если использовать функцию phpversion(), результат будет идентичен.

Проблемы и ошибки: ошибок не возникает, так как константа и функция определены во всех версиях PHP. Однако если скрипт не выполняется (например, сервер не обрабатывает PHP), результата не будет – но это не проблема метода, а проблема окружения.

Как посмотреть полную информацию о PHP через веб-интерфейс?

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

<?php phpinfo(); ?>

Результатом будет HTML-таблица. Версия указана в первой строке.

Проблема: в production-среде функция phpinfo() часто отключается директивой disable_functions. В таком случае скрипт выдаст ошибку. Решение – использовать phpversion() или обратиться к логам сервера.

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

Администраторам удобно выполнить команду php -v. Она выводит версию интерпретатора, дату сборки и информацию о лицензии.

php -v
PHP 8.2.12 (cli) (built: Oct 30 2023 10:00:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies

Для получения только номера версии можно использовать php -r 'echo PHP_VERSION;'.

Проблема: если PHP не установлен в системе или не добавлен в PATH, команда не найдена. Решение – указать полный путь к исполняемому файлу php или установить PHP.

Можно ли узнать версию PHP, не запуская скрипт?

В некоторых конфигурациях версия PHP видна в HTTP-заголовке ответа сервера, если директива expose_php включена. Например, заголовок X-Powered-By: PHP/8.2.12. Также можно посмотреть переменную $_SERVER['SERVER_SOFTWARE'] (не всегда содержит версию PHP).

<?php
echo $_SERVER['SERVER_SOFTWARE'];
?>

Результат может быть: Apache/2.4.57 (Unix) PHP/8.2.12

Проблема: если expose_php выключено, заголовок не передаётся. Также переменная SERVER_SOFTWARE доступна не во всех SAPI. Метод ненадёжен.

Расширенные примеры определения версии PHP

Дополнительные сценарии использования для точного контроля и автоматизации.

1. Получение версии конкретного расширения

Функция phpversion('extension_name') выводит версию указанного модуля.

Пример
<?php
echo phpversion('mbstring'); // версия модуля mbstring
?>
8.2

2. Числовое сравнение версий с помощью PHP_VERSION_ID

Константа PHP_VERSION_ID содержит целое число (например, 80212 для 8.2.12), удобное для сравнения.

Пример
<?php
if (PHP_VERSION_ID >= 80100) {
    echo 'Требуется PHP 8.1 или новее';
}
?>
Требуется PHP 8.1 или новее

3. Вывод версии в формате JSON для API

Пример
<?php
header('Content-Type: application/json');
echo json_encode(['php_version' => phpversion()]);
?>
{"php_version":"8.2.12"}

4. Получение версии через CLI с фильтрацией

Команда php -i | grep "PHP Version" показывает строку с версией. В командной оболочке используйте двойные кавычки, в JSON для HTML записываем как есть.

Пример
php -i | grep "PHP Version"
PHP Version => 8.2.12

5. Проверка минимальной версии и вывод предупреждения

Пример
<?php
$required = '8.0.0';
if (version_compare(PHP_VERSION, $required, '<')) {
    echo 'Текущая версия ' . PHP_VERSION . ' ниже требуемой ' . $required;
}
?>
(если версия ниже, выводится сообщение)

6. Буферизация вывода phpinfo() для дальнейшего анализа

Пример
<?php
ob_start();
phpinfo();
$info = ob_get_clean();
// Поиск версии в строке
preg_match('/PHP Version (\d+\.\d+\.\d+)/', $info, $matches);
echo isset($matches[1]) ? $matches[1] : 'не найдено';
?>
8.2.12

7. Определение SAPI и версии одновременно

Пример
<?php
echo 'SAPI: ' . php_sapi_name() . ', Версия: ' . PHP_VERSION;
?>
SAPI: apache2handler, Версия: 8.2.12

Узнать версию PHP - comments

En
узнать какой php (php)