- phpinfo
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 21 notes
- Изменения конфигурации PHP с помощью php.ini и phpinfo()
- phpinfo(): получить информацию о PHP
- Много информации
- Настройка PHP: Как работает php.ini
- Значения параметров конфигурации PHP, полезные для WordPress разработчиков
- Примечания относительно редакторов, прав доступа и перезагрузки сервера
- Конфигурация с помощью php.ini и phpinfo()
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
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 ( ‘%^.*
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
Изменения конфигурации PHP с помощью php.ini и phpinfo()
Если вы занимаетесь разработкой на WordPress , то столкнетесь с необходимостью внести изменения в PHP-среду . Поэтому нужно иметь некоторое представление о файле php.ini , чтобы справиться с ней.
Есть еще один замечательный инструмент, который должен быть у вас под рукой — это функция php info() . Например, чтобы найти файл php.ini , который нужно изменить.
phpinfo(): получить информацию о PHP
Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:
Затем заходите на эту страницу через браузер. И все.
Много информации
На приведенном выше скриншоте показан первый блок данных, который выводится при вызове функции localhost info php . Большинство из этих данных для меня, если честно — шум. Но пятая строка очень важна: она сообщает, какой файл конфигурации PHP загружен — в нашем случае это /etc/php5/fpm/php.ini . Строка помечена как “ Loaded Configuration File ”. Если нужно изменить настройки сервера, предоставившего эту страницу, нужно редактировать этот файл.
Настройка PHP: Как работает php.ini
PHP имеет ряд настраиваемых параметров. Он также имеет расширения или « плагины », которые имеют отдельные параметры. Большинство из них содержится в « конфигурационных файлах » с расширениями .ini . Википедия сообщает нам, что префикс был получен от сокращенной версии “initialization” . В любом случае эта конвенция распространяется и на PHP .
Подобные файлы очень похожи. Они включают в себя ряд значений, установленных в строках. Например:
implicit_flush = Off serialize_precision = 17 memory_limit = 256M
Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:
; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 256M
Все, что размещено в php.ini после точки с запятой ( ; ), не обрабатывается, а рассматривается как комментарий. Объявления, похожие на строку memory_limit , закомментированы. Если значение не указано, удалено или закомментировано, то PHP использует значение по умолчанию.
Значения параметров конфигурации PHP, полезные для WordPress разработчиков
Лично мне регулярно приходится сталкиваться со значениями php info файла для max_execution_time , memory_limit , upload_max_filesize и post_max_size . Существуют сотни значений, которые устанавливаются в файле php.ini и файлах различных расширений, с которыми работает PHP . Но только с этими четырьмя параметрами мне регулярно приходится иметь дело. Краткое описание каждого из них:
- max_execution_time — определяет, как долго PHP-скрипт будет исполняться до того, как он будет принудительно остановлен. По умолчанию, это примерно 30 секунд, поэтому один плохой скрипт не может заблокировать весь сервер. Я увеличиваю это значение, чтобы скрипты могли выполняться немного дольше тридцати секунд. Просто имейте в виду, что при этом увеличивается риск случайного или злонамеренно запуска продолжительного скрипта;
- memory_limit – с помощью этого параметра php info file можно разрешить процессу потреблять больше памяти сервера. Это опасно, если один из запросов пользователей начинает использовать больше ресурсов, чем следует. Но это бывает полезно при использовании специализированных плагинов для кэширования страниц;
- upload_max_filesize и post_max_size настолько похожи, что я объединил их в один пункт. Если необходимо обеспечить возможность принимать файлы размером в сотни мегабайт, вам придется повозиться с этими значениями. Увеличение этих значений может повысить потребление ресурсов сервера. post_max_size влияет на общий допустимый размер HTTP-запроса POST , а upload_max_filesize – на максимальный размер любого отдельного файла, который должен принять PHP . Мне часто приходится менять значение этих параметров, чтобы разрешить отправку большого файла в одном POST-запросе . Я всегда задаю для них одинаковые значения.
Примечания относительно редакторов, прав доступа и перезагрузки сервера
php.ini — это файл конфигурации, и поскольку он часто размещается на сервере, можно столкнуться с несколькими проблемами. Например, отсутствие доступа к файлу с помощью обычных удобных инструментов или возможности сохранить внесенные изменения:
Открытие без sudo приводит к выводу предупреждения о запрете на запись и невозможности сохранить изменения
Для редактирования nano — лучший текстовый редактор. Все его горячие сочетания клавиш прописаны на экране. Поэтому я часто редактирую файл php.ini на удаленном сервере с помощью команды:
sudo nano /etc/php5/fpm/php.ini
Я использую nano , чтобы открыть файл php info по адресу /etc/php5/fpm/php.ini .
Что такое sudo ? На хорошо настроенном сервере обычные пользователи не могут изменять файлы конфигурации. sudo — это способ, с помощью которого можно временно запрашивать права доступа уровня « администратор » или « супер пользователь » ( sudo — это сокращение от «super user do».) Таким образом можно будет сохранить файл php.ini из nano . Без этого вы, вероятно, не сможете изменить этот файл.
Конфигурация с помощью php.ini и phpinfo()
В файле php.ini содержится много других параметров. Вы можете увидеть почти все из них, запустив команду phpinfo() . Но в основном требуется изменить только небольшой набор значений. Все остальное я оставляю на усмотрение мудрых разработчиков PHP и других экспертов по конфигурации промежуточного сервера. Но мне нравится понимать то, как они работают и как работать с ними. Надеюсь, это руководство оказалось полезным для вас. Всего наилучшего!