必须先安装php-build插件、系统依赖并执行phpenv rehash,再用phpenv global/local/shell切换版本,否则php -v仍显示旧版。

直接切到 PHP 8.3,前提是它已经安装好了;没装就先装,再设为当前环境 —— 这是唯一可靠路径。
phpenv install 8.3.13 要先装插件才能用
默认克隆的 phpenv 不带编译能力,phpenv install 命令会报错:command not found: phpenv-install。
- 必须手动安装
php-build插件:git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build - 插件装完后,
phpenv install才真正可用 - PHP 8.3 系列推荐用最新小版本,比如
8.3.13(截至 2026 年 4 月仍是稳定版) - 首次安装可能失败,常见原因是缺系统依赖:Ubuntu/Debian 需
sudo apt install autoconf bison build-essential libssl-dev libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libicu-dev libzip-dev
切换到 PHP 8.3 的三种方式,效果完全不同
别只记命令,关键看作用域 —— 错配会导致「明明设了却没生效」。
-
phpenv global 8.3.13:影响所有目录,除非被更细粒度规则覆盖。适合新机器初始化时设默认版本 -
cd my-project && phpenv local 8.3.13:在项目根目录生成.php-version文件,下次进入该目录自动生效。团队协作时这是强制对齐版本的核心手段 -
phpenv shell 8.3.13:仅当前终端会话有效,关掉窗口即失效。适合临时验证或 CI 脚本中隔离测试
注意:local 和 shell 优先级高于 global,且 shell 优先级最高 —— 如果你设了 shell 又忘了取消,phpenv version 显示的永远是它,和项目无关。
phpenv version 显示的不是真实 PHP 版本?检查 rehash
装完新版本或切换后,php -v 仍显示旧版本,大概率是 shim 没更新。
-
phpenv rehash必须执行 —— 它重建所有版本的命令垫片(shim),让php、composer等命令指向正确二进制 - 常见遗漏场景:用
phpenv install装完 8.3.13 后,没运行rehash就直接php -v,结果还是老版本 - 如果
phpenv which php输出路径里不包含versions/8.3.13,说明 shim 没生效,立刻rehash - 某些 Shell(如 zsh)加载慢,
rehash后可补一句hash -r清除命令缓存
phpenv versions 列不出刚装的 8.3.13?路径权限或构建失败
phpenv versions 只显示 ~/.phpenv/versions/ 下有完整子目录的版本。装一半失败也会卡在这里。
- 检查目录是否存在:
ls -la ~/.phpenv/versions/8.3.13。若不存在,说明install过程中断,重试前先删残留:rm -rf ~/.phpenv/versions/8.3.13 - 构建日志默认在
/tmp/php-build.*.log,失败时最后几行会提示缺失依赖或 configure 报错 - macOS 用户注意:M1/M2 芯片需确认是否用了
arm64架构的 Homebrew,否则libxml2等依赖链接会出错 - 装完但不显示,也可能是
~/.phpenv/versions权限被锁死(比如 sudo 装过),用chown -R $USER ~/.phpenv/versions修复
最常被跳过的动作是装插件、装依赖、跑 rehash —— 这三步缺一不可,少一步,phpenv 就只是个空壳。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











