PHP: диагностика и настройки
Основные методы получения сведений о PHP
Как получить полную информацию о PHP с помощью одного файла?
Наиболее эффективный способ — использование функции phpinfo(). Она выводит все настройки, переменные окружения, загруженные расширения, версию PHP и многое другое.
Создайте файл info.php в корневой директории веб-сервера:
<?php
phpinfo();
?>обработка php (обработка данных в php)
Откройте в браузере http://ваш-сайт/info.php.
После использования файл рекомендуется удалить или защитить паролем.
Возможные проблемы:
- Пустая страница — проверьте установку PHP и работу веб-сервера. Файл должен иметь расширение .php.
- Ошибки синтаксиса — используйте тег <?php, а не <?.
- Нет вывода — функция может быть отключена директивой disable_functions в php.ini.
Как получить информацию о PHP из командной строки?
Команда php -i (или php --info) выводит данные в текстовом формате.
php -iPhp learning (обучение php)
Для поиска конкретного параметра, например memory_limit:
php -i | grep memory_limit
Php учебник (учебник по php)
Сохранение вывода в файл:
php -i > phpinfo.txtApis php (api на php)
Если команда не найдена, установите пакет php-cli или добавьте PHP в PATH.
Как сохранить вывод phpinfo() в текстовый файл?
Используйте буферизацию вывода и функцию file_put_contents:
<?php
ob_start();
phpinfo();
$info = ob_get_clean();
file_put_contents('phpinfo.html', $info);
echo 'Информация сохранена в phpinfo.html';
?>Php categoryid (категории в php)
Этот скрипт можно выполнить через браузер или CLI. В CLI убедитесь, что расширение mbstring доступно для корректного преобразования HTML.
Если файл пустой, проверьте права на запись в директорию. Убедитесь, что ob_start() вызывается до phpinfo().
Как программно получить отдельные параметры PHP?
Используйте функции ini_get(), get_loaded_extensions(), phpversion() и другие.
<?php
echo 'Версия PHP: ' . phpversion() . "\n";
echo 'Лимит памяти: ' . ini_get('memory_limit') . "\n";
echo 'Расширения: ' . implode(', ', get_loaded_extensions()) . "\n";
echo 'Максимальный размер загружаемого файла: ' . ini_get('upload_max_filesize') . "\n";
?>Html javascript php (интеграция html, javascript и php)
Не все директивы доступны через ini_get() — некоторые можно прочитать только через ini_get_all().
Как получить только список загруженных модулей?
Передайте константу INFO_MODULES в phpinfo():
<?php
phpinfo(INFO_MODULES);
?>Index php post (обработка post-запросов в php)
Также можно использовать get_loaded_extensions() для простого списка.
В некоторых версиях PHP вывод может быть неполным. Для CLI используйте php -m.
Как получить только конфигурационные директивы?
Используйте константу INFO_CONFIGURATION:
<?php
phpinfo(INFO_CONFIGURATION);
?>Index php page ru (создание index.php страницы)
Это покажет только секцию "Configuration" из стандартного вывода phpinfo().
Некоторые директивы могут отображаться в других секциях, например в "PHP Core".
Как посмотреть переменные окружения PHP?
Используйте INFO_VARIABLES или INFO_ENVIRONMENT:
<?php
phpinfo(INFO_VARIABLES); // переменные суперглобальных массивов
phpinfo(INFO_ENVIRONMENT); // переменные окружения
?>Php javascript css (javascript и css в php)
Также можно вывести содержимое $_SERVER и $_ENV напрямую.
Некоторые переменные могут быть скрыты настройками безопасности (expose_php = Off).
Как проверить, какой обработчик PHP используется (mod_php, FastCGI, FPM)?
В выводе phpinfo() найдите строку Server API. В CLI это Command Line Interface. Для веб-сервера Apache это может быть Apache 2.0 Handler или FPM/FastCGI.
php -i | grep 'Server API'Php m3u (создание m3u плейлиста на php)
Если используется Nginx с php-fpm, Server API будет FPM/FastCGI. Для проверки php-fpm используйте скрипт:
<?php
echo php_sapi_name();
?>
Расширенные примеры работы с информацией PHP
Пример 1: Использование всех флагов phpinfo()
Константы можно комбинировать через побитовое ИЛИ для выбора нужных разделов.
<?php
// Только общая информация и конфигурация
phpinfo(INFO_GENERAL | INFO_CONFIGURATION);
// Только модули и переменные
phpinfo(INFO_MODULES | INFO_VARIABLES);
// Вся информация
phpinfo(INFO_ALL);
?>
Результат: каждый вызов выводит HTML-таблицу с соответствующими разделами.
Пример 2: Сохранение phpinfo() в формате JSON
Можно преобразовать HTML-вывод в структурированные данные с помощью парсинга или получить ключевые параметры напрямую.
<?php
$info = [
'version' => phpversion(),
'memory_limit' => ini_get('memory_limit'),
'extensions' => get_loaded_extensions(),
'server_api' => php_sapi_name()
];
header('Content-Type: application/json');
echo json_encode($info, JSON_PRETTY_PRINT);
?>
Результат:
{
"version": "8.2.12",
"memory_limit": "128M",
"extensions": ["Core", "date", "libxml", ...],
"server_api": "Apache 2.0 Handler"
}
Пример 3: Получение информации через CLI с форматированием
Команда php -r позволяет выполнить код без отдельного скрипта.
php -r "phpinfo();" > /dev/null 2>&1 | head -20
Или используйте php -i с фильтрацией:
php -i | grep -E '^(PHP Version|Loaded Configuration|Server API)'
Пример вывода:
PHP Version => 8.2.12 Loaded Configuration File => /etc/php/8.2/cli/php.ini Server API => Command Line Interface
Пример 4: Детальный анализ расширений через ReflectionExtension
<?php
$ext = new ReflectionExtension('mbstring');
echo 'Version: ' . $ext->getVersion() . "\n";
echo 'Classes: ' . implode(', ', $ext->getClassNames()) . "\n";
echo 'Functions: ' . implode(', ', $ext->getFunctions()) . "\n";
$deps = $ext->getDependencies();
echo 'Dependencies: ' . implode(', ', array_keys($deps)) . "\n";
?>
Результат может выглядеть так:
Version: 8.2.12 Classes: Mbstring Functions: mb_strlen, mb_strpos, ... Dependencies: none
Пример 5: Использование ini_get_all() с фильтрацией по разделу
<?php
$all = ini_get_all();
foreach ($all as $key => $value) {
if (str_starts_with($key, 'session.')) {
echo "$key = {$value['local_value']} (global: {$value['global_value']})\n";
}
}
?>
Выведет все настройки, начинающиеся с session..
Пример 6: Получение информации о среде с php_uname() и sys_getloadavg()
<?php
echo 'Операционная система: ' . php_uname() . "\n";
$load = sys_getloadavg();
echo 'Нагрузка за 1 мин: ' . $load[0] . "\n";
echo 'Архитектура: ' . php_uname('m') . "\n";
?>
Результат:
Операционная система: Linux web01 5.15.0-91-generic #101-Ubuntu SMP ... Нагрузка за 1 мин: 0.25 Архитектура: x86_64
Пример 7: Буферизация и парсинг phpinfo() для извлечения значения
<?php
ob_start();
phpinfo(INFO_GENERAL);
$html = ob_get_clean();
// Извлекаем значение 'PHP Version'
preg_match('/PHP Version.*>(\d+\.\d+\.\d+)</', $html, $matches);
echo 'Версия: ' . ($matches[1] ?? 'не найдено') . "\n";
?>
Этот метод полезен для автоматического сбора метрик.
Пример 8: Создание информационной страницы в стиле phpinfo() с дополнительными данными
<?php
function customInfo() {
echo '<h3>Собранная информация</h3>';
echo '<table border="1">';
echo '<tr><td>PHP Version</td><td>' . phpversion() . '</td></tr>';
echo '<tr><td>Server API</td><td>' . php_sapi_name() . '</td></tr>';
echo '<tr><td>max_execution_time</td><td>' . ini_get('max_execution_time') . 's</td></tr>';
echo '</table>';
}
customInfo();
?>
Результат — простая HTML-таблица с выбранными параметрами.