phpinfo
Выводит большое количество информации о текущем состоянии PHP. Сюда входит информация о настройках компиляции PHP, о модулях, о версии, информация о сервере и среде выполнения (если PHP компилировался как модуль), окружении PHP, версии ОС, о путях, об основных и локальных значениях настроек конфигурации, о HTTP-заголовках и лицензии PHP.
Так как каждая система имеет свои особенности, phpinfo() используется в основном для проверки настроек конфигурации и для просмотра доступных предопределённых констант в данной системе.
phpinfo() также используется в целях отладки, так как содержит все данные EGPCS (Environment, GET, POST, Cookie, Server).
Список параметров
Вывод функции можно настраивать, передавая битовую маску из одной или более приведённых ниже констант (constants). Эта маска передаётся в качестве необязательного аргумента flags . Отдельные константы или битовые значения можно комбинировать с помощью побитового оператора ИЛИ.
| Имя (константа) | Значение | Описание |
|---|---|---|
| INFO_GENERAL | 1 | Строка конфигурации, расположение php.ini , дата сборки, сервер, система и др. |
| INFO_CREDITS | 2 | Разработчики PHP. Смотрите также phpcredits() . |
| INFO_CONFIGURATION | 4 | Текущие значение основных и локальных PHP директив. Смотрите также ini_get() . |
| INFO_MODULES | 8 | Загруженные модули и их настройки. Смотрите также get_loaded_extensions() . |
| INFO_ENVIRONMENT | 16 | Информация о переменных окружения, которая также доступна в $_ENV . |
| INFO_VARIABLES | 32 | Выводит все предопределённые переменные из EGPCS (Environment, GET, POST, Cookie, Server). |
| INFO_LICENSE | 64 | Информация о лицензии PHP. Смотрите также » license FAQ. |
| INFO_ALL | -1 | Выводит все приведённое выше. |
Возвращаемые значения
Функция всегда возвращает true .
Примеры
Пример #1 Пример использования phpinfo()
// Показывать всю информацию, по умолчанию INFO_ALL
phpinfo ();
// Показывать информацию только о загруженных модулях.
// phpinfo(8) выдаёт тот же результат.
phpinfo ( INFO_MODULES );
Примечания
Замечание:
В версиях PHP до 5.5, часть информации не выводится, если настройка expose_php установлена в off . Это PHP и Zend логотипы и информация о разработчиках.
Замечание:
В режиме CLI phpinfo() выводит обычный текст вместо HTML.
Смотрите также
- phpversion() — Получает текущую версию PHP
- phpcredits() — Выводит список разработчиков PHP
- ini_get() — Получает значение настройки конфигурации
- ini_set() — Устанавливает значение настройки конфигурации
- get_loaded_extensions() — Возвращает массив имён всех скомпилированных и загруженных модулей
- Предопределённые переменные
User Contributed Notes 21 notes
14 years ago
A simple method to style your own phpinfo() output.
ob_start () ;
phpinfo () ;
$pinfo = ob_get_contents () ;
ob_end_clean () ;
// the name attribute «module_Zend Optimizer» of an anker-tag is not xhtml valide, so replace it with «module_Zend_Optimizer»
echo ( str_replace ( «module_Zend Optimizer» , «module_Zend_Optimizer» , preg_replace ( ‘%^.*
13 years ago
This is necessary to obtain a W3C validation (XHTML1.0 Transitionnal).
phpinfo’s output is declared with that DTD :
— «System ID» has the wrong url to validate : «DTD/xhtml1-transitional.dtd» rather than «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»
— Some module names contains space and the function’s output use the name in anchors as ID and NAME. these attributes can’t be validated like that (unique name only).
ob_start (); // Capturing
phpinfo (); // phpinfo ()
$info = trim ( ob_get_clean ()); // output
// Replace white space in ID and NAME attributes. if exists
$info = preg_replace ( ‘/(id|name)(=[«\’][^ «\’]+) ([^ «\’]*[«\’])/i’ , ‘$1$2_$3’ , $info );
$info_doc = new DOMDocument ( ‘1.0’ , ‘utf-8’ );
/* Parse phpinfo’s output
* operator @ used to avoid messages about undefined entities
* or use loadHTML instead
*/
@ $info_doc -> loadXML ( $info );
$doc -> documentElement -> appendChild ( // Adding HEAD element to HTML
$doc -> importNode (
$info_doc -> getElementsByTagName ( ‘head’ )-> item ( 0 ),
true // With all the subtree
)
);
$doc -> documentElement -> appendChild ( // Adding BODY element to HTML
$doc -> importNode (
$info_doc -> getElementsByTagName ( ‘body’ )-> item ( 0 ),
true // With all the subtree
)
);
// Now you get a clean output and you are able to validate.
/*
echo ($doc->saveXML ());
// OR
echo ($doc->saveHTML ());
*/
// By that way it’s easy to add some style declaration :
$style = $doc -> getElementsByTagName ( ‘style’ )-> item ( 0 );
$style -> appendChild (
$doc -> createTextNode (
‘/* SOME NEW CSS RULES TO ADD TO THE FUNCTION OUTPUT */’
)
);
// to add some more informations to display :
$body = $doc -> getElementsByTagName ( ‘body’ )-> item ( 0 );
$element = $doc -> createElement ( ‘p’ );
$element -> appendChild (
$doc -> createTextNode (
‘SOME NEW CONTENT TO DISPLAY’
)
);
$body -> appendChild ( $element );
// to add a new header :
$head = $doc -> getElementsByTagName ( ‘head’ )-> item ( 0 );
$meta = $doc -> createElement ( ‘meta’ );
$meta -> setAttribute ( ‘name’ , ‘author’ );
$meta -> setAttribute ( ‘content’ , ‘arimbourg at ariworld dot eu’ );
$head -> appendChild ( $meta );
// As you wish, take the rest of the output and add it for debugging
$out = ob_get_clean ();
$pre = $doc -> createElement ( ‘div’ ); // or pre
$pre -> setAttribute ( ‘style’ , ‘white-space: pre;’ ); // for a div element, useless with pre
$pre -> appendChild ( $doc -> createTextNode ( $out ));
$body -> appendChild ( $pre );
$doc -> formatOutput = true ; // For a nice indentation
$doc -> saveXML ();
?>
All that could be done with only RegExp but I prefer the use of DOM for manipulating documents
