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