如何通过编程方式从php获取phpinfo()变量?

Ear*_*rlz 15 php configuration phpinfo

我试图获得PHP中"隐藏"常量的可靠(一致的跨请求)列表(例如,客户端在没有黑客攻击的情况下不会知道它).

我感兴趣的一些事情如下:

  1. ./configure 选项.
  2. 我也想要第一个 System phpinfo的价值.
  3. 加载的PHP模块(如Apache部分所示)
  4. PHP的构建日期.
  5. 已注册的PHP流
  6. 已注册的流套接字传输
  7. 已注册的流过滤器

我怎样才能获得phpinfo的一部分或将这些值作为常规字符串?请注意,如果包含标记并不重要,但我不想解析phpinfo,因为它看起来真的很慢,肯定有更好的方法..

Ali*_*xel 21

干得好:

  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();
Run Code Online (Sandbox Code Playgroud)

由于使用ob_get_clean()它不会搞乱您可能正在使用的其他输出缓冲级别.


Tyl*_*ter 7

phpinfo()中提供的大多数东西都可以在常量中找到.试着看看:

print_r(get_defined_constants());
Run Code Online (Sandbox Code Playgroud)

或者此页面上的功能: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/手动/ EN/function.get-CFG-var.php