Установление текущей версии интерпретатора PHP
Методы проверки версии PHP
Как быстро узнать версию PHP с помощью встроенной функции?
Основной эффективный способ - использование функции phpversion(). Она возвращает строку с текущей версией интерпретатора. Подходит для встраивания в код приложения или создания файла для быстрой проверки. Шаги:
<?php echo phpversion(); ?>Check php version (проверка версии php)
Результат:
8.2.12
Admin php url (url администратора php)
Для получения расширенной информации о расширениях и настройках можно использовать phpinfo(), но её вывод предназначен для просмотра человеком.
Проблема: функция phpinfo() может быть отключена в php.ini (директива disable_functions). Тогда остаётся только phpversion().
Цель использования: быстрая проверка в процессе разработки, диагностика совместимости модулей.
Как получить всестороннюю информацию о PHP через phpinfo()?
Создать файл info.php с кодом:
<?php phpinfo(); ?>Site am php (администрирование сайта php (am))
Открыть его в браузере. На странице отображается версия PHP, список установленных расширений, настройки конфигурации. Удобно при диагностике окружения.
Проблема: если функция отключена, страница будет пустой. Проверить директиву disable_functions в php.ini.
Случаи использования: настройка сервера, проверка наличия требуемых расширений перед установкой CMS.
Как узнать версию PHP из командной строки?
На сервере с терминалом выполнить:
php -vустановить php сервер (установка php-сервера)
Вывод содержит версию и информацию о Zend Engine:
PHP 8.2.12 (cli) (built: Nov 15 2023 12:00:00) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.2.12, Copyright (c) Zend Technologies
Edit php (редактирование php-кода)
Также работает команда php --version.
Проблема: команда не найдена, если PHP не добавлен в PATH. Решение - указать полный путь к исполняемому файлу, например /usr/bin/php -v.
Цель: быстрая проверка без создания веб-файлов, на серверах без графического интерфейса.
Как проверить версию PHP через предопределённую константу?
Константа PHP_VERSION содержит версию в виде строки. Используется в коде для условных проверок:
<?php echo PHP_VERSION; ?>
Результат аналогичен вызову phpversion().
Ошибка: невозможно использовать в окружении, где PHP-код не выполняется (например, в shell-скриптах).
Случаи использования: внутри PHP-приложений для динамической проверки совместимости.
Как узнать версию PHP с помощью Composer?
Composer выводит версию PHP при выполнении команды composer show -p или просто composer --version. Однако последняя показывает версию самого Composer. Для версии PHP:
composer show -p | grep php
Вывод:
php 8.2.12
Этот метод полезен, когда Composer уже установлен и нужно проверить соответствие требований пакетов.
Проблема: Composer может быть не установлен или использовать другой интерпретатор (например, через Docker). Проверить путь к PHP у Composer.
Случаи использования: управление зависимостями, проверка требований перед установкой библиотек.
Дополнительные примеры с кодом и результатами
Проверка минимальной версии PHP в скрипте
Сценарий, в котором приложение требует PHP 8.0 или новее. Используется phpversion() и version_compare():
<?php
$required = '8.0';
$current = phpversion();
if (version_compare($current, $required, '>=')) {
echo "Версия PHP $current удовлетворяет требованиям ($required и выше).";
} else {
echo "Требуется PHP $required или выше, установлена $current.";
}
?>
Результат выполнения:
Версия PHP 8.2.12 удовлетворяет требованиям (8.0 и выше).
Сравнение версий с помощью version_compare()
Функция version_compare() возвращает -1, 0 или 1. Пример проверки нескольких операторов:
<?php
echo version_compare('8.1.0', '8.0.0', '>='); // 1
echo version_compare('7.4.0', '8.0.0', '<'); // 1
echo version_compare('8.0.0', '8.0.0', '=='); // 0
?>
Результат:
110
Цифры выводятся без разделителей. Для наглядности можно добавить переносы строк.
Проверка версии отдельного расширения (модуля)
Функция phpversion() принимает необязательный параметр - имя расширения:
<?php
echo 'mbstring: ' . phpversion('mbstring') . "\n";
echo 'json: ' . phpversion('json') . "\n";
echo 'curl: ' . phpversion('curl') . "\n";
?>
Результат:
mbstring: 8.2.12 json: 1.8.0 curl: 8.2.12
Если расширение не загружено, возвращается false. Такая проверка полезна при диагностике неработающих модулей.
Получение версии PHP из командной строки внутри скрипта
Использование shell_exec() для запуска внешней команды и парсинга вывода:
<?php
$output = shell_exec('php -v');
preg_match('/PHP (\d+\.\d+\.\d+)/', $output, $matches);
$version = $matches[1] ?? 'Не удалось определить';
echo "Версия PHP из CLI: $version";
?>
Результат:
Версия PHP из CLI: 8.2.12
Может пригодиться, когда нужно сравнить версию веб-модуля и CLI, или если phpversion() отключена.
Массовая проверка версий PHP на нескольких серверах (shell-скрипт)
Сценарий для системного администратора: обход списка серверов по SSH и сбор версий:
#!/bin/bash
servers=("server1.example.com" "server2.example.com")
for server in "${servers[@]}"; do
echo "Сервер: $server"
ssh $server "php -v | head -n1"
done
Пример вывода:
Сервер: server1.example.com PHP 8.1.18 (cli) (built: Apr 15 2024 10:30:00) ( NTS ) Сервер: server2.example.com PHP 8.2.12 (cli) (built: Nov 15 2023 12:00:00) ( NTS )
Требуется настроенный SSH-доступ. Можно расширить скрипт для записи результатов в файл.