phpenv本身不提供phpinfo()功能,它仅是php版本管理工具,负责切换cli下php可执行文件路径,不启动web服务器,也不直接执行phpinfo();需通过web sapi(如apache/php-fpm)或cli手动运行phpinfo()才能查看。

phpenv 本身不提供 phpinfo() 功能
phpenv 是一个版本管理工具,只负责切换 php 可执行文件路径,它不内置 Web 环境、不启动服务器,也**无法直接调用 phpinfo()**。想看到 phpinfo() 输出,必须让 PHP 在 Web SAPI(如 Apache 或 PHP-FPM)或 CLI 模式下实际执行该函数。
确认当前生效的 PHP 版本和配置路径
在用 phpenv 切换后,先验证 CLI 层是否已生效:
- 运行
php -v—— 看输出的版本号是否与预期一致 - 运行
php --ini—— 查看当前 CLI 加载的php.ini路径,注意它和 Web 环境的配置文件通常不同(比如/etc/php/8.2/cli/php.inivs/etc/php/8.2/fpm/php.ini) - 运行
which php—— 确认指向的是~/.phpenv/shims/php,而不是系统自带的/usr/bin/php
在 Web 环境中查看 phpinfo() 的正确姿势
phpenv 管理的是 CLI 的 PHP,但 phpinfo() 页面由 Web 服务器(Nginx/Apache)+ PHP-FPM(或 mod_php)共同提供。因此:
- Web 端的 PHP 版本由 PHP-FPM 池或 Apache 模块决定,和 phpenv 无关;修改它需重启对应服务(如
sudo systemctl restart php8.2-fpm) - 若你用 phpenv 安装了多个 PHP(如 8.1、8.2),并希望某个站点用 8.2 的
phpinfo(),必须确保该站点的 PHP-FPM 池明确指定了listen = /run/php/php8.2-fpm.sock,且 Nginx 配置里fastcgi_pass指向它 - 临时调试可建一个
info.php文件:<?php phpinfo(); ?>
放到 Web 根目录,通过浏览器访问 —— 此时显示的是 Web SAPI 的完整环境,包括加载的模块、$_SERVER、$_ENV等
快速检查 CLI 和 Web 是否对齐
常见坑是:phpenv 切到 8.2,php -v 显示 8.2,但浏览器打开 info.php 却显示 7.4 —— 这说明 Web 服务没跟着切。此时要查:
-
ps aux | grep fpm看哪些 PHP-FPM 进程在跑 -
sudo ss -tulpn | grep :9000或对应端口,确认监听的是哪个版本的 socket -
php -m和php --ri opcache只反映 CLI 模块,不能代表 Web 环境
真正容易被忽略的是:phpenv 不碰 Web 服务进程,也不改任何 .ini 文件内容 —— 它只改 shell 的 $PATH 和 shim 行为。想让 Web 和 CLI 一致,得手动对齐 PHP-FPM 配置和 phpenv 安装的版本。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











