Проверка версии PHP на сайте: способы и инструкции

Раздел: Администрирование PHP -> Информация о PHP

Как создать простой скрипт для вывода версии PHP?

Наиболее надёжный способ определить версию PHP на сервере - создать файл с расширением .php, содержащий вызов функции phpinfo() или константы PHP_VERSION. Этот файл размещается в корневой директории сайта, после чего открывается в браузере.

<?php phpinfo(); ?>

узнать php сайта (узнать версию php на сайте)

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

<?php echo 'Версия PHP: ' . PHP_VERSION; ?>

Возможные проблемы:

  • Файл не выполняется, а отображается как текст - значит, PHP не обрабатывается. Проверяется расширение .php и настройки веб-сервера (например, директива AddType application/x-httpd-php .php).
  • Ошибка 500 - вероятно, синтаксическая ошибка или запрет выполнения. Проверяется синтаксис и права доступа (644).
  • После проверки файл следует удалить, чтобы избежать раскрытия конфигурации.

Цель использования: быстрая единоразовая проверка, когда есть доступ к файловой системе сайта через FTP или файловый менеджер хостинга.

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

Если есть SSH-доступ к серверу, выполняется команда php -v. Она показывает версию интерпретатора.

php -v
PHP 8.1.12 (cli) (built: Nov  9 2022 09:57:42) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies

Проблемы: Команда может вывести версию другого PHP (например, системного, а не того, что используется в вебе). Для точности лучше указать полный путь: /usr/bin/php -v или найти через which php. Также может отсутствовать доступ к SSH.

Цель использования: регулярные проверки на выделенных серверах или VPS, возможность автоматизации через скрипты.

Можно ли узнать версию PHP по HTTP-заголовкам ответа?

По умолчанию PHP отправляет HTTP-заголовок X-Powered-By: PHP/8.1.12. Проверяется с помощью утилиты curl или инструментов разработчика браузера.

curl -I https://example.com | grep -i "x-powered-by"
X-Powered-By: PHP/8.1.12

Если директива expose_php выключена, заголовок не отправляется. Тогда этот способ не работает.

Проблема: Современные серверы часто скрывают версию PHP. Метод ненадёжен. Альтернатива - проверить заголовок Server, но он может содержать только PHP/версию, если сервер - встроенный PHP.

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

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

Большинство панелей (cPanel, ISPmanager, Plesk) показывают текущую версию PHP в разделе управления PHP или в информации о сайте. В cPanel, например, раздел Select PHP Version отображает установленную версию и позволяет её изменить.

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

Как вывести версию PHP в существующей странице сайта?

Если уже есть доступ к управлению темами или плагинами CMS, можно добавить вызов функции phpversion() в любой исполняемый PHP-файл. Например, в нижний колонтитул WordPress:

<?php echo 'PHP ' . phpversion(); ?>

Проблема: Изменение файлов CMS может нарушить обновления. Лучше использовать временный скрипт или плагин.

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

Как узнать версию PHP с помощью онлайн-сервисов?

Сервисы вроде whatismyphpversion.com предлагают загрузить их скрипт или вставить URL вашего файла info.php. Фактически это то же создание скрипта, но с дополнительным анализом.

Цель использования: когда нет возможности выполнить команды, но есть возможность загрузить файл.

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

Пример 1. Скрипт с выводом полной информации о PHP

Следующий скрипт выводит версию PHP, версию Zend Engine и архитектуру компиляции.

Пример
<?php
echo 'PHP Version: ' . PHP_VERSION . "\n";
echo 'Zend Engine: ' . zend_version() . "\n";
echo 'Архитектура: ' . php_uname('m') . "\n";
echo 'Дата сборки: ' . phpinfo(INFO_GENERAL) ? 'см. phpinfo' : '';
?>

Результат выполнения:

PHP Version: 8.1.12
Zend Engine: 4.1.12
Архитектура: x86_64
Дата сборки: см. phpinfo

Пример 2. Формирование JSON-ответа с версией PHP

Этот скрипт возвращает данные в формате JSON, удобном для автоматической обработки.

Пример
<?php
header('Content-Type: application/json');
$data = [
   'php_version' => phpversion(),
   'server_software' => $_SERVER['SERVER_SOFTWARE'] ?? 'unknown',
   'server_protocol' => $_SERVER['SERVER_PROTOCOL'] ?? 'unknown'
];
echo json_encode($data, JSON_PRETTY_PRINT);
?>

Результат выполнения (curl или браузер):

{
    "php_version": "8.1.12",
    "server_software": "Apache/2.4.41 (Unix)",
    "server_protocol": "HTTP/1.1"
}

Пример 3. Получение версии PHP из вывода phpinfo() с помощью регулярного выражения

Если нужно извлечь только версию, а не весь вывод, можно использовать буферизацию вывода.

Пример
<?php
ob_start();
phpinfo();
$html = ob_get_clean();
preg_match('/PHP Version\s*<\/td>]*>([^<]+)/i', $html, $matches);
$version = $matches[1] ?? 'не найдено';
echo 'Версия PHP: ' . $version;
?>

Результат выполнения:

Версия PHP: 8.1.12

Пример 4. Проверка версии PHP через командную строку с помощью php -r

Можно выполнить PHP-код прямо в командной строке без создания файла.

Пример
php -r 'echo PHP_VERSION;'
8.1.12

Для проверки разных установок PHP указывается полный путь к интерпретатору:

Пример
/opt/php8.2/bin/php -r 'echo PHP_VERSION;'

Пример 5. Проверка версии PHP через HTTP-заголовки с помощью curl (включая случаи выключенного expose_php)

Когда заголовок X-Powered-By скрыт, можно попробовать найти версию в теле ответа, если сервер возвращает другую информацию (например, на странице 404).

Пример
curl -sI https://example.com | grep -i php || echo "Заголовок не найден"

Если сервер не скрывает, результат будет как в основном разделе. В противном случае никакой информации.

Пример 6. Скрипт для проверки минимальной версии PHP

Такой скрипт может использоваться как часть установщика приложения.

Пример
<?php
$required = '7.4';
$current = phpversion();
if (version_compare($current, $required, '>=')) {
    echo "Версия $current подходит (требуется $required).";
} else {
    echo "Требуется PHP $required или выше, у вас $current.";
}
?>

Результат при версии 8.1.12:

Версия 8.1.12 подходит (требуется 7.4).

Пример 7. Использование в WordPress: shortcode для вывода версии PHP

В файл functions.php темы добавляется код, после чего вызов шорткода [php_version] выводит версию.

Пример
add_shortcode('php_version', function() {
    return 'Версия PHP: ' . phpversion();
});

Результат на странице: Версия PHP: 8.1.12

Пример 8. Пакетная проверка версии PHP на нескольких сайтах с помощью bash и curl

Если есть список URL, можно автоматизировать проверку заголовков.

Пример
for url in example.com example.org example.net; do
  echo -n "$url: "
  curl -sI "https://$url" | grep -i 'x-powered-by' | sed 's/.*PHP\///' || echo 'не обнаружено'
done

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

example.com: 8.1.12
example.org: 8.0.25
example.net: не обнаружено

Узнать версию PHP на сайте - comments

En
узнать php сайта (php)