phpinfo() 不显示扩展主因是扩展未在web环境启用,需确认loaded configuration file路径、检查disable_functions和extension_dir、确保extension=xxx.so未被注释、重启php-fpm或apache服务,并区分cli与web配置。

phpinfo() 不显示扩展,通常不是函数本身失效,而是扩展没真正加载进当前运行环境。关键要区分“已安装”和“已启用”——很多问题出在配置路径错、服务没重载、或 CLI 与 Web 环境用的不是同一份 php.ini。
确认当前生效的 php.ini 文件
浏览器访问 phpinfo.php 页面时,顶部会明确显示 Loaded Configuration File 的路径。这个路径才是 Web 请求实际读取的配置文件。别凭经验去改 /etc/php/8.2/cli/php.ini ——那只是命令行用的。执行以下命令核对:
- php --ini:查看 CLI 模式下加载的配置
- php -r "phpinfo();" | grep "Loaded Configuration":快速定位 CLI 加载路径(供对比)
- 务必以 phpinfo() 页面显示的路径为准,只改这一份文件
检查扩展是否被禁用或屏蔽
打开刚才确认的 php.ini 文件,搜索以下两项:
- disable_functions:若其中包含 phpinfo,该函数会被直接禁用,页面返回空白或 NULL。删掉它,或注释整行
-
extension_dir:确保路径存在且可读,例如
extension_dir = "/www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/"。用ls -l验证该目录下是否有对应 .so 文件(如 fileinfo.so) - 检查 extension=xxx.so 行是否被分号注释,是否拼写错误(比如
extension=mbstring.so写成mb_string.so)
验证扩展是否真被加载
改完配置后,不能只刷新网页——必须让 PHP 运行进程重新读取配置:
- 如果用的是 PHP-FPM(Nginx 环境常见):执行
service php81-fpm restart或宝塔面板中点击「重载配置」 - 如果用的是 Apache 模块:执行
service httpd restart或systemctl restart apache2 - 切勿只重启 Nginx/Apache:它们不解析 PHP,不重启 PHP-FPM 或 Apache 的 PHP 模块,修改无效
区分 CLI 和 Web 环境,避免误判
很多人用 php -m 看到扩展已加载,但 phpinfo() 里没有——这是因 CLI 和 Web 使用不同 SAPI,加载不同 php.ini:
-
php -m查的是 CLI 的模块列表 -
phpinfo()显示的是 Web SAPI(如 fpm 或 apache2handler)的实际状态 - 用
php -i | grep "extension_dir\|Loaded Configuration"对比两者的配置路径和扩展目录 - 确保你在 Web 对应的 php.ini 中启用了扩展,而不是只改了 CLI 的那份
改配置、查路径、重服务、看 phpinfo() 顶部的 Loaded Configuration File ——四步闭环做完,95% 的扩展不显示问题都能定位清楚。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











