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

如何以编程方式从php获取phpinfo()变量?,php,configuration,phpinfo,Php,Configuration,Phpinfo,我正在尝试获取一个可靠的(跨请求一致的)PHP中“隐藏”常量列表(如中所示,在大多数情况下,如果没有黑客攻击,客户端将不知道它) 以下是我感兴趣的一些事情: /配置选项 我还想要phpinfo中的第一个系统值 加载的PHP模块(如Apache部分所示) PHP的构建日期 注册的PHP流 注册流套接字传输 注册流过滤器 如何获取phpinfo的一部分或作为常规字符串获取这些值?请注意,是否包含标记并不重要,但我不想解析phpinfo,因为这看起来非常慢,而且肯定有更好的方法 phpinfo()提供

我正在尝试获取一个可靠的(跨请求一致的)PHP中“隐藏”常量列表(如中所示,在大多数情况下,如果没有黑客攻击,客户端将不知道它)

以下是我感兴趣的一些事情:

  • /配置
    选项
  • 我还想要phpinfo中的第一个
    系统
  • 加载的PHP模块(如Apache部分所示)
  • PHP的构建日期
  • 注册的PHP流
  • 注册流套接字传输
  • 注册流过滤器

  • 如何获取phpinfo的一部分或作为常规字符串获取这些值?请注意,是否包含标记并不重要,但我不想解析phpinfo,因为这看起来非常慢,而且肯定有更好的方法

    phpinfo()提供的大部分内容都可以在常量中找到。尝试浏览:

    print_r(get_defined_constants());
    
    或此页上的函数:。有很多函数可以获取特定扩展的信息

    以下功能可能值得一看:

    ini\u get()

    getenv()

    get\u cfg\u var()

    给你:

  • ini\u get\u all()
    get\u loaded\u extensions()
    是我能找到的最接近的
  • php\u uname()
  • apache\u get\u modules()
  • phpversion()
    是我能找到的最接近的版本
  • stream\u get\u wrappers()
  • stream\u get\u transports()
  • stream\u get\u filters()
  • 另请参见
    get_defined_constants()


    正如Chacha102所提到的,您还可以使用输出控制函数并解析
    phpinfo()


    由于使用了
    ob\u get\u clean()
    它不会打乱您可能正在使用的其他输出缓冲级别。

    可能我有点晚了,但基本上如果您对php.exe调用shell脚本时出现问题

    php -i
    

    然后您可以解析所需的所有信息。不过,我不想搞砸输出缓冲,因为我将来可能会在实际页面中使用它。输出缓冲可以嵌套。如果您将来实现某些东西,这行代码不会把任何事情搞砸。@Chacha102:
    ob\u end\u clean()
    将关闭输出缓冲(需要另一个调用
    ob\u start()
    )。。。。那么,如果你不能摆脱OB的束缚,你该怎么做呢。。。说明您必须为每个
    ob_start
    调用它多次,并说明它会停止最顶层的输出缓冲区,这意味着文档自相矛盾。我相信
    PHP_VERSION
    是一个常量,也可以工作。是的,但我更喜欢使用该函数。=)我敢打赌,在微积分中,常数比函数快。再说一次,微优化无论如何都是愚蠢的。@Chacha102:我的答案只是函数,不允许常数!:PConstants很烦人,因为它们没有定义,或者PHP试图将它们用作字符串而不是常量。
    php -i