Версия PHP: как её определить на сервере
Основные способы проверки версии PHP
Как быстро узнать версию PHP через командную строку?
Наиболее эффективный способ для администратора, имеющего доступ к серверу по SSH - выполнить команду php -v. Это покажет версию интерпретатора, дату сборки и информацию о Zend Engine.
php -vверсия php на сервере (проверка версии php на сервере)
PHP 8.1.12 (cli) (built: Oct 28 2022 08:16:41) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.1.12, Copyright (c) Zend Technologies
Пояснение: команда запускает консольный интерпретатор PHP с ключом -v, который выводит информацию о версии.
Типичные проблемы:
- Команда не найдена - PHP не установлен или не добавлен в переменную PATH. Решение: найти полный путь к исполняемому файлу через
which phpили/usr/bin/php -v. - На сервере установлено несколько версий PHP. Уточните нужную, например
php8.1 -vилиls /usr/bin/php*. - Ошибка доступа - выполните команду от имени пользователя с правами на запуск PHP.
Как определить версию PHP с помощью скрипта phpinfo()?
Этот метод подойдет, если нет доступа к командной строке, но есть возможность создать файл в корне сайта. Создайте файл info.php с содержимым:
<?php phpinfo(); ?>
Откройте его в браузере по адресу http://ваш-сайт.ру/info.php. На странице будет множество параметров, включая версию PHP в первой строке.
Осторожно: Не оставляйте такой файл на продакшене! Он раскрывает критическую информацию о сервере. После проверки немедленно удалите файл или ограничьте доступ по IP через .htaccess.
Если функция phpinfo() заблокирована директивой disable_functions, используйте альтернативные методы.
Как получить только номер версии PHP без лишних данных?
Используйте константу PHP_VERSION в простом скрипте:
<?php echo PHP_VERSION; ?>
Вывод: 8.1.12. Этот метод также работает в командной строке через php -r 'echo PHP_VERSION;'.
В редких случаях константа может быть переопределена. Для надежности используйте функцию phpversion().
Как проверить версию PHP через панель управления хостингом?
Многие хостинг-провайдеры предоставляют интерфейс для выбора или просмотра версии PHP. Например, в cPanel: раздел Select PHP Version, в ISPmanager: меню PHP - Версии. Обычно там отображается текущая версия и список доступных для переключения.
Иногда панель показывает не ту версию, которая реально используется. Проверьте через скрипт.
Как удаленно получить версию PHP с помощью curl?
Если скрипт с phpinfo() уже размещен, можно выполнить запрос с другого сервера или локально:
curl -s http://example.com/info.php | grep 'PHP Version'
PHP Version => 8.1.12
Либо используйте wget -qO- http://example.com/info.php | grep 'PHP Version'.
Если сервер использует HTTPS с самоподписанным сертификатом, добавьте -k в curl.
Расширенные примеры и дополнительные возможности
Здесь представлены более детальные примеры для различных ситуаций.
Пример 1: Использование php -i для получения версии
php -i | grep 'PHP Version'
PHP Version => 8.1.12
Пример 2: Функция phpversion()
<?php echo phpversion(); ?>
8.1.12
Пример 3: Проверка минимальной версии PHP в скрипте
<?php
if (PHP_VERSION_ID < 80100) {
die('Требуется PHP 8.1 или выше');
}
echo 'Версия подходит';
?>
Версия подходит
Пример 4: Список всех установленных версий PHP на сервере
ls /usr/bin/php*
/usr/bin/php8.0 /usr/bin/php8.1 /usr/bin/php8.2
или через update-alternatives:
update-alternatives --list php
Пример 5: Получение версии в переменную bash
PHP_VERSION=$(php -r 'echo PHP_VERSION;')
echo $PHP_VERSION
8.1.12
Пример 6: Проверка версии модуля Apache
apachectl -M | grep php
php8_module (shared)
Пример 7: Команда в Windows
php -v
PHP 8.1.12 (cli) (built: Oct 28 2022 08:16:41) ( NTS ) ...
Пример 8: Через CGI
php-cgi -v
Пример 9: phpinfo() с ограничением вывода
<?php phpinfo(INFO_GENERAL); ?>
Пример 10: Извлечение версии через curl с регулярным выражением
curl -s http://example.com/info.php | grep -oP 'PHP Version \K[0-9.]+'
8.1.12
Пояснение: обратная косая перед K экранирует символ в регулярном выражении. В JSON эта строка требует дополнительного экранирования, но внутри HTML она записана корректно.