phpenv本身不提供查看php运行时信息的命令,仅负责版本切换和shims路径管理;需用php -v、php -m、php --ini等原生命令查版本、模块及配置,且cli与web环境完全独立。

phpenv 本身不提供直接查看 PHP 运行时信息的命令,它只负责版本切换和 shims 路径管理。你真正要查的是当前 php 命令实际指向哪个版本、加载了哪些模块、用的是哪份配置——这些都得靠 PHP 自身命令,但前提是 phpenv 已正确生效。
为什么 php -v 没变?先确认 phpenv 是否真在工作
常见错误是以为装完就自动接管,结果 php -v 还显示系统自带版本。本质是 shell 没走 phpenv 的 shim,而是调用了 /usr/bin/php 或其他路径。
- 运行
which php:如果输出不是~/.phpenv/shims/php,说明 PATH 或 init 没配对 - 检查
echo $PATH是否包含~/.phpenv/shims(必须在~/.phpenv/bin之前) - 执行
phpenv rehash强制重建 shim 文件,尤其在新装 PHP 后漏掉这步很常见 - 确认 shell 配置文件(
~/.bashrc或~/.zshrc)里有eval "$(phpenv init -)",且已source过
phpenv version 和 php -v 输出不一致?这是正常现象
phpenv version 显示的是「当前作用域下应激活的版本」,而 php -v 显示的是「实际执行的 PHP 解释器版本」。两者不一致,说明环境没对齐。
-
phpenv version输出类似7.4.33 (set by /path/to/project/.php-version),只是声明意图 -
php -v才是真实结果;若不一致,优先排查which php和phpenv rehash - 项目级设置(
phpenv local 7.4.33)只在该目录及子目录生效,cd 出去就失效 - 临时会话设置(
phpenv shell 8.2.18)退出终端即消失,适合快速验证
查模块、查配置、查完整环境,全靠原生 PHP 命令
phpenv 不干涉 PHP 内部行为,所有诊断命令照常使用,但要注意:CLI 和 Web SAPI 的 PHP 配置可能完全不同。
-
php -v:看版本号和构建信息(注意末尾是否带(cli)) -
php -m:列出 CLI 下已加载的扩展,不含 Apache/Nginx 加载的模块 -
php --ini:显示 CLI 使用的php.ini路径,通常为~/.phpenv/versions/8.2.18/etc/php.ini -
php -i | grep 'Loaded Configuration File':更精准定位配置文件位置 - Web 环境需另建
info.php(<?php phpinfo(); ?>),不能依赖 CLI 命令
容易被忽略的关键点
最常卡住的地方不是不会用命令,而是没意识到 CLI 和 Web 是两套独立环境。你在终端里用 phpenv local 8.3.13 切换成功,不代表浏览器访问的 PHP 就是这个版本——Web 服务器用的是它自己编译或包管理安装的 PHP,和 phpenv 完全无关。phpenv 只管你敲命令时的 CLI 环境。如果你需要 Web 端也用指定版本,得配 Nginx/Apache 的 fastcgi_pass 或 SetHandler 指向对应 php-fpm 实例,那已经超出 phpenv 职责范围了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











