phpinfo被禁用怎么恢复?PHP信息函数开启教程
时间:2026-06-10 | 作者:318050 | 阅读:0访问PHP脚本时,如果发现phpinfo()函数调用直接返回空白页,或者抛出报错提示,那多半是它被系统给“拉黑”了。别急,下面这份排查与恢复指南,按步骤来就能搞定。顺便一提:所有操作前记得备份原始配置文件。
一、修改php.ini中disable_functions配置项
phpinfo()被禁用的最常见原因,就是它被写进了disable_functions指令里。把它从那个“黑名单”中移除,问题就解决了一大半。
- 先找到当前生效的php.ini文件路径。命令行里跑一下
php --ini。或者临时写个PHP文件,里面放一句echo php_ini_loaded_file();,运行后就能看到路径。 - 用文本编辑器打开这个php.ini文件。
- 搜索
disable_functions关键词。你会看到类似这样的配置行:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,phpinfo。 - 把其中的
phpinfo从逗号分隔的列表中剔除。注意别手滑删多了逗号,保持语法正确就行。 - 保存文件,完成修改。
二、检查Suhosin扩展是否拦截phpinfo()
某些服务器开启了Suhosin安全扩展,它有自己的“黑名单”机制。即便php.ini里没禁用phpinfo(),它也能独立拦截。这一点很多人都容易忽略。
- 在PHP环境中执行
php -m | grep suhosin,确认Suhosin是否已加载。 - 找到suhosin.ini或suhosin.so所在目录,通常位于
/etc/php/*/mods-available/或/usr/local/lib/php/extensions/下。 - 打开suhosin.ini文件,搜索
suhosin.executor.func.blacklist配置项。 - 如果该行里包含了
phpinfo,把它从中删除;如果整行就是suhosin.executor.func.blacklist = "phpinfo",直接注释掉或者清空这个值。 - 保存文件后,重启Web服务器(Apache或Nginx)以及PHP-FPM服务。
三、验证Web服务器配置是否覆盖PHP设置
在一些虚拟主机或使用了模块化部署的环境里,Apache的php_admin_value或php_flag指令,或者PHP-FPM池配置,优先级都比php.ini高。如果这些地方也针对disable_functions做了限制,那就得从这里入手。
- 检查Apache配置文件(比如
httpd.conf或站点vhost配置),搜寻php_admin_value disable_functions或php_flag disable_functions指令。 - 检查PHP-FPM池配置(例如
www.conf),看有没有php_admin_value[disable_functions]这样的行。 - 如果找到且其中包含
phpinfo,将其从该指令的值中移除,或者直接整行注释掉。 - 保存配置后,分别执行
apachectl graceful或systemctl reload php-fpm,同时重启对应的Web服务。
四、确认SELinux或文件权限限制影响
如果系统启用了SELinux并处于 enforcing 模式,安全策略可能阻止PHP进程调用某些内置函数。phpinfo()就是常见目标之一,尤其是当PHP运行在受限上下文里的时候。
- 执行
sestatus确认SELinux是否处于 enforcing 模式。 - 临时把SELinux设为 permissive 模式:
setenforce 0,然后测试phpinfo()能否正常使用。 - 如果恢复成功了,那问题基本锁定在SELinux策略上。
- 用
ausearch -m avc -ts recent | grep php查看拒绝日志,确认里面有没有涉及phpinfo的denial条目。 - 根据日志生成并加载自定义策略模块:
audit2allow -a -M phpinfo_allow && semodule -i phpinfo_allow.pp。
五、检查用户自定义函数重写或钩子干扰
某些CMS、框架或安全插件,会通过auto_prepend_file机制动态替换或屏蔽phpinfo()函数。这个“暗桩”藏得很深,需要专门排查。
- 检查php.ini中的
auto_prepend_file配置项,看它指向了哪个PHP文件。 - 打开那个文件,搜索
function phpinfo、override_function、rename_function,或者类似if (function_exists('phpinfo')) { unset($GLOBALS['phpinfo']); }这样的可疑代码。 - 如果发现对phpinfo()的显式屏蔽逻辑,把它注释或删除。
- 同时检查
include_path下是否存在第三方安全类库(比如php-malware-scanner、hardened-php等),确认它们没有启用函数拦截功能。 - 保存修改后,清除OPcache:执行
php -r "opcache_reset();",或者干脆重启PHP-FPM进程。
来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- PHP文件被加密后的解密方法与技巧汇总
- 时间:2026-06-10
-
- PHP中explode()函数与函数作用域深度解析与实践
- 时间:2026-06-08
-
- 多用户商城系统是否必须用PHP开发
- 时间:2026-06-03
-
- PHP对象复制与遍历原理与实践详解
- 时间:2026-06-03
-
- PHPMyAdmin Web端管理MySQL数据库配置完整步骤
- 时间:2026-05-31
-
- PHP提取加密文档数据与解密教程
- 时间:2026-05-30
-
- 记事本打开PHP文件的优缺点及软件推荐
- 时间:2026-05-30
-
- Linux下快速切换PHP版本的实用方法与详细步骤指南
- 时间:2026-05-28
精选合集
更多大家都在玩
大家都在看
更多-
- 高清画质投屏软件推荐实用稳定低延迟屏幕镜像工具
- 时间:2026-06-10
-
- 钓鱼种田游戏大全
- 时间:2026-06-10
-
- 小学一年级拼音跟读软件排行榜 好用易上手的APP推荐
- 时间:2026-06-10
-
- 哥特王朝重制版哪些技能值得学
- 时间:2026-06-10
-
- 2026年高音质无广告功能全音乐App下载推荐
- 时间:2026-06-10
-
- 免费好用的一键去水印APP推荐,高清无痕去除视频图片水印
- 时间:2026-06-10
-
- CodeBuddy能否实现前端无障碍代码改造
- 时间:2026-06-10
-
- 支付宝授权登录过的软件查看方法
- 时间:2026-06-10