用phpenv-installer一键安装最省事,自动配置路径和shell初始化;手动安装需同时设置PATH和eval "$(phpenv init -)";安装PHP版本后必须执行phpenv rehash才能生效;项目级切换依赖.php-version文件和shims机制。

直接用 phpenv-installer 脚本安装最省事,手动克隆容易漏掉 init 或路径配置,导致 phpenv 命令找不到、php 不切换版本。
用 phpenv-installer 一键装好就可用
这是官方推荐的最快方式,绕过手动 git 克隆 + 环境变量拼写错误风险:
- 运行
curl -L https://raw.githubusercontent.com/phpenv/phpenv-installer/master/bin/phpenv-installer | bash - 脚本会自动把
phpenv放到~/.phpenv,并追加两行到~/.bashrc(或~/.zshrc) - 执行
source ~/.bashrc(或source ~/.zshrc)立即生效 - 验证:
phpenv --version和phpenv versions应该能正常输出
注意:如果提示 command not found: phpenv,大概率是 shell 配置文件没 reload,别急着重装,先 source 一下。
手动安装时 PATH 和 init 必须配对写
手动方式不是不行,但错一个字符就白忙活。关键点只有两个,且必须同时存在:
立即学习“PHP免费学习笔记(深入)”;
-
export PATH="$HOME/.phpenv/bin:$PATH"—— 让系统找到phpenv命令本身 -
eval "$(phpenv init -)"—— 这行才真正启用 shims 机制,让php、composer等命令被拦截并路由到对应版本
常见错误:只加了第一行,忘了第二行 → phpenv 命令可用,但 php -v 永远显示系统自带 PHP;或者把第二行写成 phpenv init(少 -)→ 报错 no such command。
装完 PHP 版本后一定要 rehash
phpenv install 8.3.13 成功不代表马上能用。新版本二进制文件不会自动注册到 shims 目录,得手动触发映射:
- 运行
phpenv rehash - 再执行
phpenv versions,确认8.3.13前有星号(*)表示当前激活 - 检查
which php输出是否为~/.phpenv/shims/php,不是这个路径说明没走通 shims
如果你跳过 rehash 就直接 phpenv global 8.3.13,会发现 php -v 仍显示旧版本 —— 这不是 bug,是机制没加载到位。
项目级切换靠 .php-version 文件,不是靠 cd 后立刻生效
phpenv local 7.4.33 命令只是在当前目录生成一个 .php-version 文件,内容就是 7.4.33。它的生效依赖两个前提:
- 你已执行过
eval "$(phpenv init -)"(即 shims 已启用) - 你 cd 进该目录后,再运行
php—— shims 会在执行时读取当前目录及父目录的.php-version,逐级向上找,直到根目录
所以不要指望在别的目录下 phpenv local 一下,就让整个子树都切换。它不递归,也不监听文件系统变化,纯靠运行时查找。这也是为什么团队协作时建议把 .php-version 提交进 Git:别人 clone 下来,只要环境配对,php 自动对齐。



















