Проверка номера релиза PHP: подробное описание

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

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

Основные методы определения версии PHP

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

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

php -v

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

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

PHP 8.2.12 (cli) (built: Nov  8 2023 08:00:00) ( NTS )\nCopyright (c) The PHP Group\nZend Engine v4.2.12, Copyright (c) Zend Technologies

Пояснение: команда обращается к интерпретатору PHP, установленному в системе по умолчанию. Если есть несколько версий, можно указать полный путь, например /usr/bin/php8.1 -v.

Типичная ошибка: команда не найдена - это означает, что PHP не установлен или не добавлен в PATH. Решение в проверке наличия файла через which php или установке PHP. Другая проблема: выводится не та версия, которая используется в веб-сервере - это часто случается, если PHP-FPM и CLI настроены на разные версии. Уточнение версии веб-модуля возможно через файл phpinfo.php.

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

Создаётся файл с содержимым:

<?php phpinfo(); ?>

Затем его открывают в браузере. На странице будет много данных, но версия указана в первой строке.

Цель: удобно для веб-окружения, когда нет доступа к SSH.

Проблема: функция может быть отключена в php.ini директивой disable_functions. Тогда страница будет пустой или вызовет ошибку. Альтернатива: использование phpinfo(INFO_GENERAL) для выборочного вывода.

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

Применяется константа PHP_VERSION или функция phpversion().

<?php\necho 'PHP версия: ' . PHP_VERSION;\n?>

Или:

<?php\necho 'PHP версия: ' . phpversion();\n?>

Цель: встраивание в приложения или скрипты для проверки совместимости.

Возможная путаница: эти методы показывают версию только того интерпретатора, который выполняет скрипт. Если в CLI и веб разные версии, то результат будет различаться в зависимости от контекста.

Как узнать версию PHP через команду php -i?

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

php -i | grep "PHP Version"

Результат:

PHP Version => 8.2.12

Цель: быстрый поиск без создания файлов.

Ошибка: на некоторых системах grep может не найти строку из-за локали. Используется php -i | grep -i "php version".

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

В cPanel, ISPmanager, DirectAdmin и других панелях обычно отображается версия PHP в разделе "Выбор версии PHP" или "PHP Settings". Пример: cPanel → Select PHP Version.

Цель: удобно для пользователей без доступа к командной строке.

Проблема: панель может показывать версию, но фактически приложения могут использовать другую версию через .htaccess или конфигурацию веб-сервера.

Как проверить версию PHP, используя консольную утилиту phpinfo() в браузере через существующий сайт?

Если на сайте уже есть файл phpinfo.php, достаточно открыть его. Если нет, создаётся новый.

Цель: быстрое получение информации без специального ПО.

Проблема безопасности: phpinfo() раскрывает много конфиденциальных данных, поэтому после использования файл следует удалить.

Как узнать версию PHP через переменные окружения или серверные переменные?

В некоторых окружениях версия может быть в переменной $_SERVER['SERVER_SOFTWARE'] (но не всегда).

<?php\necho $_SERVER['SERVER_SOFTWARE'];\n?>

Также можно использовать $_SERVER['PHP_VERSION'] - но эта переменная не является стандартной.

Цель: нестандартные случаи, когда другие способы недоступны.

Ненадёжность: данные могут отсутствовать или быть неполными.

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

1. Пример использования phpversion() с указанием модуля:

Пример
<?php\necho 'Версия ядра: ' . phpversion() . "\n";\necho 'Версия PDO: ' . phpversion('pdo') . "\n";\necho 'Версия mbstring: ' . phpversion('mbstring') . "\n";\n?>
Версия ядра: 8.2.12\nВерсия PDO: 8.2.12\nВерсия mbstring: 8.2.12

Пояснение: можно получить версию конкретного расширения.

2. Проверка совместимости с помощью version_compare:

Пример
<?php\n$required = '7.4.0';\n$current = PHP_VERSION;\nif (version_compare($current, $required, '>=')) {\n    echo "Версия подходит ($current >= $required)";\n} else {\n    echo "Требуется обновление";\n}\n?>
Версия подходит (8.2.12 >= 7.4.0)

3. Получение версии через shell_exec:

Пример
<?php\n$output = shell_exec('php -v 2>&1');\necho "Результат:\\n$output";\n?>
Результат:\nPHP 8.2.12 (cli) (built: Nov  8 2023 08:00:00) ( NTS )\n...

Примечание: нужно быть осторожным с безопасностью, если вводится пользовательский ввод.

4. Использование ob_start для захвата вывода phpinfo():

Пример
<?php\nob_start();\nphpinfo(INFO_GENERAL);\n$content = ob_get_clean();\npreg_match('/PHP Version =\\> ([^\\n]+)/', $content, $matches);\nif (isset($matches[1])) {\n    echo "Версия: " . $matches[1];\n}\n?>
Версия: 8.2.12

5. Проверка версии в разных SAPI (CLI vs CGI):

Пример
$ php -r "echo PHP_SAPI . ': ' . PHP_VERSION;"
cli: 8.2.12

Для CGI: php-cgi -v или через веб-сервер.

6. Получение версии через файл phpversion.php с использованием JSON:

Пример
<?php\nheader('Content-Type: application/json');\necho json_encode(['php_version' => PHP_VERSION, 'sapi' => PHP_SAPI]);\n?>
{"php_version":"8.2.12","sapi":"apache2handler"}

7. Пример для Laravel: через tinker:

Пример
$ php artisan tinker\n>>> PHP_VERSION\n=> "8.2.12"

Или через команду: php -r "echo PHP_VERSION;" в корне проекта.

8. Фильтрация major.minor версии:

Пример
<?php\n$version = PHP_VERSION;\n$parts = explode('.', $version);\n$majorMinor = $parts[0] . '.' . $parts[1];\necho "Основная версия: $majorMinor";\n?>
Основная версия: 8.2

9. Проверка версии через curl к phpinfo.php:

Пример
$ curl -s http://example.com/phpinfo.php | grep "PHP Version"
<tr><td class="e">PHP Version </td><td class="v">8.2.12</td></tr>

Пояснение: получение версии удаленно.

10. Использование get_loaded_extensions для проверки наличия определенной версии модуля:

Пример
<?php\n$ext = 'mbstring';\nif (extension_loaded($ext)) {\n    echo "Расширение $ext загружено, версия: " . phpversion($ext);\n} else {\n    echo "$ext не найдено";\n}\n?>
Расширение mbstring загружено, версия: 8.2.12

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

En
посмотреть версию php (php)