Проверка номера релиза 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