Как программно получить переменные phpinfo () из php?

Я пытаюсь получить список надежных (согласованных по запросам) списка «скрытых» констант в PHP (например, клиентская сторона в большинстве случаев не узнает об этом без взлома).

Вот некоторые из вещей, которые меня интересуют:

  1. ./configure вариантов.
  2. Я также хотел бы самое первое значение System в phpinfo.
  3. Загруженные модули PHP (как показано в разделе Apache)
  4. Дата сборки PHP.
  5. Зарегистрированные потоки PHP
  6. Транспорты зарегистрированных потоковых сокетов
  7. Зарегистрированные фильтры потоков

Как я могу получить либо только часть phpinfo, либо эти значения в виде обычной строки? Обратите внимание, что не имеет значения, включена ли разметка, но я не хочу анализировать phpinfo, поскольку это кажется очень медленным и, безусловно, есть лучший способ ..


person Earlz    schedule 15.01.2010    source источник


Ответы (3)


Ну вот:

  1. ini_get_all() или get_loaded_extensions() были самыми близкими, которые я смог найти
  2. php_uname()
  3. apache_get_modules()
  4. phpversion() был самым близким, что я смог найти
  5. stream_get_wrappers()
  6. stream_get_transports()
  7. stream_get_filters()

См. Также get_defined_constants() и еще несколько.


Как упоминал Chacha102, вы также можете использовать функции управления выводом и анализировать phpinfo():

ob_start();
phpinfo();
$variable = ob_get_contents();
ob_get_clean();

Благодаря использованию ob_get_clean() он не испортит другие уровни буферизации вывода, которые вы можете использовать.

person Alix Axel    schedule 15.01.2010
comment
Я считаю, что PHP_VERSION - это константа, которая также подойдет. - person Tyler Carter; 15.01.2010
comment
Да, но я предпочитаю использовать эту функцию. знак равно - person Alix Axel; 15.01.2010
comment
Бьюсь об заклад, в микропредприятиях, что константа быстрее, чем функция. С другой стороны, микроптимизации в любом случае глупы. - person Tyler Carter; 15.01.2010
comment
@ Chacha102: Мой ответ - только функция, никакие константы не допускаются! :П - person Alix Axel; 15.01.2010
comment
Константы раздражают, потому что они не определены или PHP пытается использовать их как строку вместо константы. - person Tyler Carter; 15.01.2010
comment
Я искал что-то немного другое (настройка страницы PHPINFO путем введения ссылки на таблицу стилей, а не извлечения из нее данных), но это мне очень помогло, так что +1 и личные похвалы! - person Dave Morton; 02.04.2016

Большинство возможностей phpinfo () можно найти в константах. Попробуйте просмотреть:

print_r(get_defined_constants());

Или функции на этой странице: http://us.php.net/manual/en/ref.info.php. Существует множество функций для получения информации о конкретных расширениях.

Стоит обратить внимание на следующие функции:

ini_get() http://us.php.net/manual/en/function.ini-get.php
getenv() http://us.php.net/manual/en/function.getenv.php
get_cfg_var() http://us.php.net/manual/en/function.get-cfg-var.php

person Tyler Carter    schedule 15.01.2010
comment
Что ж, я не хочу портить буферизацию вывода, потому что я могу использовать ее в будущем для реальных страниц. - person Earlz; 15.01.2010
comment
Буферизация вывода может быть вложенной. Эта строка кода ничего не испортит, если вы что-то реализуете в будущем. - person Tyler Carter; 15.01.2010
comment
@ Chacha102: ob_end_clean() отключит буферизацию вывода (требуется еще один вызов ob_start()). - person Alix Axel; 15.01.2010
comment
Хммм .... Тогда как вы собираетесь вить OB, если вы не можете вырваться из них ... - person Tyler Carter; 15.01.2010
comment
us.php.net/manual/en/function.ob- end-flush.php говорит, что вы должны вызывать его несколько раз для каждого ob_start, и говорит, что он останавливает самый верхний выходной буфер, что означает, что документация противоречит сама себе. - person Tyler Carter; 15.01.2010
comment
Документация в порядке. Вы читаете ob_end_flush() страницу, а не ob_end_clean() страницу. В любом случае вы должны использовать ob_get_clean() вместо ob_end_clean(). - person Alix Axel; 15.01.2010

Возможно, я немного опаздываю, но в основном, если вы вызываете сценарий оболочки проблематично для php.exe

php -i

затем вы можете проанализировать всю необходимую информацию

person Grigor Nazaryan    schedule 31.03.2016