您现在的位置是:烟消火灭网 > 热点

phpinfo代码

烟消火灭网2026-10-17 07:43:09【热点】0人已围观

简介打开一个刚部署好的PHP环境,随手写个 phpinfo.php,里面就一行 <?php phpinfo(); ?>,扔到Web目录下,浏览器访问一下。页面刷出来的那一刻,密密麻麻的表格铺满

打开一个刚部署好的PHP环境,随手写个 phpinfo.php,里面就一行 <?php phpinfo(); ?>,扔到Web目录下,浏览器访问一下。页面刷出来的那一刻,密密麻麻的表格铺满屏幕,绿蓝相间的标题行,一眼看过去像某种体检报告。这东西太常见了,常见到很多人根本没认真读过它到底在说什么。

我见过不少开发者的习惯是:装完PHP,先跑phpinfo,扫一眼版本号,确认MySQL扩展在,然后就把文件删了。严格来说这不算错。但phpinfo能告诉你的远不止这些。它其实是PHP运行时的一份完整快照——从编译参数到加载的ini文件路径,从每个扩展的版本到环境变量,甚至包括HTTP头里带了什么。你把它当成“版本查看器”用,等于买了台显微镜只拿来当放大镜。

举个具体的例子。有次帮人排查一个上传失败的问题,代码逻辑没问题,php.ini里 upload_max_filesize 也改了。但就是不行。打开phpinfo一看,Loaded Configuration File 指向的路径根本不是他改的那个ini。服务器上跑了两个PHP版本,Apache加载的是另一个。这种问题,不看phpinfo的配置路径那一栏,光靠猜能猜半天。

再说一个更隐蔽的。phpinfo() 输出里有一块叫 apache2handler 或者 fpm 的区域,里面会列出 SERVER_SOFTWARE、DOCUMENT_ROOT 这些。有时候Nginx和PHP-FPM之间的 fastcgi_param 没配好,SCRIPT_FILENAME 是错的,但页面能跑——因为PHP-FPM有兜底逻辑。这种“能跑但不对”的状态,phpinfo里一眼就能看出来。值不对,颜色都正常,但内容就是错的。

安全层面更不用说了。生产环境暴露phpinfo等于把家底摊开给人看。PHP版本、编译选项、启用了哪些模块、disable_functions 列表、甚至 session.save_path 的路径。攻击者拿到这些信息,能省掉大半探测步骤。我自己的做法是:本地开发环境随便跑,测试环境加个IP白名单,生产环境直接禁掉 phpinfo 函数,在 disable_functions 里写上。

说到 disable_functions,这里有个细节。phpinfo页面会显示这个指令的值。如果你禁了 phpinfo 本身,那页面自然打不开。但如果你只禁了 exec、system 这些,phpinfo里会老老实实列出来。这其实是给运维人员看的——确认安全策略生效了。我习惯在部署后跑一次phpinfo,截图存档,下次出问题对比着看。配置文件改了什么,扩展升级了没有,一目了然。

还有个小技巧。phpinfo(INFO_MODULES) 只输出模块信息,页面短很多,适合快速定位扩展相关的问题。phpinfo(INFO_CONFIGURATION) 只看配置项。不带参数是全量输出,信息过载。带参数用好了,效率高不少。

最后说个真实场景。有台老服务器要迁移,PHP版本从5.6升到7.4。迁移前跑一次phpinfo,把 Configure Command 那一长串复制出来,对比新环境的编译参数。少了哪个 --with- 选项,哪个扩展没编进去,全在这行里。这比翻文档、查手册快得多。phpinfo不会告诉你“该怎么做”,但它会告诉你“现在是什么样”。知道现状,离解决问题就不远了。

所以别急着删那个文件。让它多活几分钟,滚动条拉到底,看看那些平时不关注的区块。你会发现,这个最简单的PHP函数,可能是你调试环境时最诚实的朋友。

很赞哦!(537)

上一篇: 渗透作用定义

下一篇: 网络渗透教程