Phpinfo: примеры (PHP)
phpinfo(int $flags = INFO_ALL): boolФункция phpinfo() предоставляет подробные сведения о текущей конфигурации PHP. Она используется для отладки, проверки настроек сервера и модулей, а также для получения информации о версии PHP и окружении.
Вызов функции выводит в браузер структурированную информацию. Это полезно на этапе разработки для проверки активации расширений, значений конфигурационных директив и переменных окружения.
Функция принимает один необязательный параметр flags, который определяет тип выводимой информации. Константы могут комбинироваться с помощью побитового ИЛИ.
- INFO_GENERAL (1) – основная информация: версия PHP, путь к конфигурационному файлу, окружение.
- INFO_CREDITS (2) – список разработчиков PHP и модулей.
- INFO_CONFIGURATION (4) – текущие значения конфигурационных директив (php.ini).
- INFO_MODULES (8) – список загруженных модулей и их настроек.
- INFO_ENVIRONMENT (16) – переменные окружения ($_ENV).
- INFO_VARIABLES (32) – предопределенные переменные ($_GET, $_POST и др.).
- INFO_LICENSE (64) – информация о лицензии PHP.
- INFO_ALL (-1) – вывод всей доступной информации.
Вывод всей стандартной информации:
<?php
phpinfo();
?>Результат:
(Отображается полная страница с таблицами, содержащими данные о версии PHP, конфигурации, модулях, переменных окружения и т.д.)
Использование флагов для выбора информации:
<?php
// Выводим только конфигурационные настройки
phpinfo(INFO_CONFIGURATION);
?><?php
// Выводим список модулей и переменные окружения
phpinfo(INFO_MODULES | INFO_ENVIRONMENT);
?>- phpversion() – возвращает строку с номером версии PHP. Удобна для быстрой проверки.
- ini_get_all() – возвращает массив всех конфигурационных директив и их значений. Позволяет программно обрабатывать настройки.
- get_loaded_extensions() – возвращает массив имен загруженных расширений. Для получения деталей по конкретному расширению используют phpinfo(INFO_MODULES) или extension_loaded().
- $_SERVER, $_ENV – суперглобальные массивы. Содержат часть информации, аналогичной разделам INFO_ENVIRONMENT и INFO_VARIABLES.
phpinfo() предпочтительна для визуального анализа, а альтернативные функции – для программного доступа к данным внутри скриптов.
Phpinfo в Python
Модуль sys и platform предоставляют информацию о среде выполнения.
import sys, platform
print("Версия Python:", sys.version)
print("Платформа:", platform.platform())
# Детальная информация о сборке
print(sys.version_info)Версия Python: 3.11.0 (main, Oct 24 2022, 18:26:48) [GCC 12.2.0] Платформа: Linux-6.1.0-21-amd64-x86_64-with-glibc2.36
Глобальный объект process содержит данные о процессе и среде.
console.log("Версия Node.js:", process.version);
console.log("Платформа:", process.platform);
console.log("Архитектура:", process.arch);
// Вывод переменных окружения
console.log("Путь:", process.env.PATH);Версия Node.js: v20.11.0 Платформа: linux Архитектура: x64
Phpinfo в MySQL
Для получения системной информации используют команды STATUS и SHOW VARIABLES.
STATUS;
-- Или
SHOW VARIABLES LIKE '%version%';В отличие от phpinfo, эти инструменты предоставляют информацию в рамках своей среды, а не о языке в целом.
Если до вызова phpinfo были отправлены данные или заголовки, может возникнуть ошибка.
<?php
echo "Текст перед phpinfo";
phpinfo(); // Может вызвать предупреждение
?>Warning: Cannot modify header information - headers already sent by...
Оставленный вызов phpinfo на публичном сервере создает угрозу безопасности, раскрывая конфигурацию.
Передача неподдерживаемого значения флага не приводит к ошибке, но результат может быть неожиданным.
<?php
phpinfo(999); // Выводит стандартный полный отчет (INFO_ALL)
?>В PHP 8.0.0 изменено значение по умолчанию для параметра flags. Теперь по умолчанию используется INFO_ALL (ранее было INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_ENVIRONMENT | INFO_VARIABLES).
В PHP 8.1.0 добавлена константа INFO_LICENSE для вывода информации о лицензии.
<?php
// В PHP 8+ вызов без параметров выводит все разделы
phpinfo();
?>Использование буферизации вывода для записи информации в файл.
<?php
ob_start();
phpinfo(INFO_MODULES);
$info = ob_get_clean();
file_put_contents('modules_info.html', $info);
echo "Информация о модулях сохранена.";
?>Получение определенной директивы после вывода phpinfo в буфер и парсинга.
<?php
ob_start();
phpinfo(INFO_CONFIGURATION);
$info = ob_get_clean();
if (preg_match('/memory_limit.*>(.*)<\/td>/i', $info, $matches)) {
echo "Лимит памяти: " . trim($matches[1]);
}
?>Лимит памяти: 128M
Альтернатива функции extension_loaded с визуальным подтверждением.
<?php
ob_start();
phpinfo(INFO_MODULES);
$info = ob_get_clean();
if (strpos($info, 'curl') !== false) {
echo "Расширение cURL активно.";
} else {
echo "Расширение cURL не найдено.";
}
?>Функция всегда выводит HTML. Для получения текстового представления можно использовать удаление тегов.
<?php
ob_start();
phpinfo();
$info = ob_get_clean();
echo strip_tags($info);
?>