商城首页欢迎来到中国正版软件门户

您的位置:首页 >phpinfo被禁用了怎么恢复_开启PHP信息函数的设置调整【教程】

phpinfo被禁用了怎么恢复_开启PHP信息函数的设置调整【教程】

  发布于2026-06-11 阅读(0)

扫一扫,手机访问

访问PHP脚本时,如果发现phpinfo()函数调用直接返回空白页或者抛出报错提示,那多半是它被系统给“拉黑”了。别急,下面这份排查与恢复指南,按步骤来就能搞定(顺便一提,所有操作前记得备份原始配置文件)。

一、修改php.ini中disable_functions配置项

phpinfo()被禁用的最常见原因,就是它被写进了disable_functions指令里。把它从那个“黑名单”中移除,问题就解决了一大半。

1、先找到当前生效的php.ini文件路径。命令行里跑一下php --ini,或者临时写个PHP文件,里面放一句echo php_ini_loaded_file();,运行后就能看到路径。

2、用文本编辑器打开这个php.ini文件。

3、搜索disable_functions关键词。你会看到类似这样的配置行:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,phpinfo

4、把其中的phpinfo从逗号分隔的列表中剔除。注意别手滑删多了逗号,保持语法正确就行。

5、保存文件,完成修改。

二、检查Suhosin扩展是否拦截phpinfo()

某些服务器开启了Suhosin安全扩展,它有自己的“黑名单”机制,即便php.ini里没禁用phpinfo(),它也能独立拦截。这一点很多人都容易忽略。

1、在PHP环境中执行php -m | grep suhosin,确认Suhosin是否已加载。

2、找到suhosin.ini或suhosin.so所在目录,通常位于/etc/php/*/mods-a vailable//usr/local/lib/php/extensions/下。

3、打开suhosin.ini文件,搜索suhosin.executor.func.blacklist配置项。

4、如果该行里包含了phpinfo,把它从中删除;如果整行就是suhosin.executor.func.blacklist = "phpinfo",直接注释掉或者清空这个值。

5、保存文件后,重启Web服务器(Apache或Nginx)以及PHP-FPM服务。

三、验证Web服务器配置是否覆盖PHP设置

在一些虚拟主机或使用了模块化部署的环境里,Apache的php_admin_valuephp_flag指令,或者PHP-FPM池配置,优先级都比php.ini高。如果这些地方也针对disable_functions做了限制,那就得从这里入手。

1、检查Apache配置文件(比如httpd.conf或站点vhost配置),搜寻php_admin_value disable_functionsphp_flag disable_functions指令。

2、检查PHP-FPM池配置(例如www.conf),看有没有php_admin_value[disable_functions]这样的行。

3、如果找到且其中包含phpinfo,将其从该指令的值中移除,或者直接整行注释掉。

4、保存配置后,分别执行apachectl gracefulsystemctl reload php-fpm,同时重启对应的Web服务。

四、确认SELinux或文件权限限制影响

如果系统启用了SELinux并处于 enforcing 模式,安全策略可能阻止PHP进程调用某些内置函数——phpinfo()就是常见目标之一,尤其是当PHP运行在受限上下文里的时候。

1、执行sestatus确认SELinux是否处于 enforcing 模式。

2、临时把SELinux设为 permissive 模式:setenforce 0,然后测试phpinfo()能否正常使用。

3、如果恢复成功了,那问题基本锁定在SELinux策略上。

4、用ausearch -m a vc -ts recent | grep php查看拒绝日志,确认里面有没有涉及phpinfo的denial条目。

5、根据日志生成并加载自定义策略模块:audit2allow -a -M phpinfo_allow && semodule -i phpinfo_allow.pp

五、检查用户自定义函数重写或钩子干扰

某些CMS、框架或安全插件,会通过auto_prepend_file机制动态替换或屏蔽phpinfo()函数。这个“暗桩”藏得很深,需要专门排查。

1、检查php.ini中的auto_prepend_file配置项,看它指向了哪个PHP文件。

2、打开那个文件,搜索function phpinfooverride_functionrename_function,或者类似if (function_exists('phpinfo')) { unset($GLOBALS['phpinfo']); }这样的可疑代码。

3、如果发现对phpinfo()的显式屏蔽逻辑,把它注释或删除。

4、同时检查include_path下是否存在第三方安全类库(比如php-malware-scanner、hardened-php等),确认它们没有启用函数拦截功能。

5、保存修改后,清除OPcache:执行php -r "opcache_reset();",或者干脆重启PHP-FPM进程。

本文转载于:http://www.hzzjxy.com/rjjc/92414.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注