Установленная версия 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