您现在的位置是:百科 >>正文
phpinfo 是什么
百科732人已围观
简介phpinfo 是什么?说白了,它就是一个PHP自带的函数,你只要在脚本里写上<?php phpinfo(); ?>,浏览器里就能渲染出一整张密密麻麻的配置表。这张表里躺着PHP版本号、编 ...
phpinfo 是什么?说白了,它就是一个PHP自带的函数,你只要在脚本里写上<?php phpinfo(); ?>,浏览器里就能渲染出一整张密密麻麻的配置表。这张表里躺着PHP版本号、编译参数、加载了哪些扩展、环境变量、服务器API类型,甚至连当前内存上限、文件上传大小限制这种细枝末节都翻了个底朝天。
我第一次用phpinfo,是帮同事排查一个图片上传失败的bug。他折腾了半天,代码逻辑看了三遍都没问题,最后我让他写个phpinfo页面打开,一眼就瞄到upload_max_filesize写着2M,而他要传的那张图刚好2.3M。改完配置,问题瞬间消失。你看,这种问题不看phpinfo,你可能会去改代码、查权限、重启服务,折腾一晚上都未必找得到北。
phpinfo的输出内容分好几大块。最上面是PHP本身的版本和系统信息,往下是Configuration部分,这里用两个列表分别展示PHP核心指令和各类扩展的专属设置。每个指令旁边都标着local value和master value——前者是当前目录或虚拟主机覆盖后的值,后者是php.ini里的全局默认值。这俩不一样的时候,就说明有地方做了局部覆盖,比如.htaccess或Nginx的fastcgi_param。很多人忽略这个区别,结果改了半天php.ini,页面上的值纹丝不动,就是因为被局部配置压住了。
再往下你会看到PHP Variables这一栏,里面是$_SERVER和$_ENV的超全局变量快照。比如HTTP_USER_AGENT、REMOTE_ADDR、REQUEST_URI这些,调试接口签名或者排查跨域问题时,直接看这里比打日志快得多。有一次我怀疑Nginx重写规则没生效,就是靠phpinfo里SCRIPT_FILENAME的实际值确认了路径传递方式不对。
phpinfo还能帮你确认扩展到底有没有装上。很多人用extension=redis.so写了配置,但忘了重启PHP-FPM,结果代码里调用Redis类直接报未找到。这时候打开phpinfo搜一下“redis”,如果一片空白,说明扩展根本没加载成功,跟代码半毛钱关系都没有。
另外,phpinfo也是安全审计的起点。如果页面里expose_php显示为On,服务器响应头里就会带着X-Powered-By: PHP/7.4.33,这等于告诉别人你用的具体版本,方便人家针对性找漏洞。所以生产环境最好把它关掉。再比如disable_functions如果为空,意味着exec、system这些危险函数全都敞开着,一旦有代码注入漏洞,后果不堪设想。
不过phpinfo也不是万能的。它只反映PHP自身和它直接依赖的环境,看不到MySQL慢查询、Redis内存碎片、或者磁盘IO瓶颈。但至少,当问题出在PHP配置层时,phpinfo能让你少走一大半弯路。
对了,别把phpinfo页面留在公网可访问的地方。它泄露的信息太全了——绝对路径、模块列表、甚至某些情况下还会把环境变量里的数据库密码带出来。我见过有人的phpinfo页面里直接显示DB_PASSWORD=123456,那酸爽,简直像把家门钥匙挂在门口。用完就删,或者加个IP白名单,这习惯得养成。
最后说个冷知识:phpinfo的输出其实分两种模式,默认是INFO_ALL,显示全部信息。你也可以传常量进去,比如phpinfo(INFO_MODULES)只显示已加载的模块,phpinfo(INFO_ENVIRONMENT)只看环境变量。真到排查问题时,全量输出反而眼花缭乱,按需过滤更高效。
Tags:
下一篇:怎么在堡垒之夜国际服免费领v币
相关文章
常见中间件漏洞
百科常见中间件漏洞 中间件是网站架构里的“承重墙”,但很多运维人员只盯着应用代码,把这堵墙忘得一干二净。等被黑进去,才发现墙里早被掏空了。 Tomcat:管理后台的裸奔 Tomcat算是最常见的靶子。很多 ...
【百科】
阅读更多黑客入侵网站
百科凌晨三点,我的手机突然疯狂震动。监控系统推送了十七条警报——某个客户网站的后台登录界面,正被来自俄罗斯的IP地址暴力破解。密码字典每秒尝试四十次,像有人拿着万能钥匙,一把把捅你家门锁。 这场景我见过太 ...
【百科】
阅读更多盗取优惠券
百科那天凌晨两点十七分,我蹲在便利店冰柜前,手机屏幕的光映在脸上。系统提示“满60减30券已到账”,但我购物车里只有一瓶六块钱的乌龙茶。这不是我第一次为了凑单而焦虑,也不是第一次在深夜对着优惠券页面发呆— ...
【百科】
阅读更多