phpenv 是纯 shell 脚本的轻量级 php 版本管理器,不提供预编译包,需 git 克隆源码(git clone https://gitcode.com/gh_mirrors/ph/phpenv ~/.phpenv),依赖 shims 和路径重定向调度本地 php 版本;phpenv install 需手动安装 php-build 插件才可用。

phpenv 本身不提供预编译二进制包,必须用 git 克隆源码
phpenv 不是传统意义上的“下载安装包”工具,它是一个纯 shell 脚本构成的轻量级版本管理器,核心逻辑靠 shims 和路径重定向实现。所谓“轻量”,指它不打包 PHP 本身,只负责调度你本地编译或安装的 PHP 版本。
直接执行以下命令克隆最新稳定版(注意仓库地址已迁移至镜像站):
git clone https://gitcode.com/gh_mirrors/ph/phpenv ~/.phpenv
不要用 curl | bash 或第三方一键脚本——那些不可控、易过期,且多数已失效。官方维护的唯一可信入口就是这个 Git 仓库。
常见错误现象:
-
command not found: phpenv:说明~/.phpenv/bin没进PATH,检查echo $PATH输出里有没有这一段 -
phpenv: no such command 'init':克隆不完整,删掉~/.phpenv重来,确认ls ~/.phpenv/bin/下有phpenv可执行文件
环境变量配置必须写入 shell 初始化文件,且顺序不能错
phpenv 的 init 命令会输出两部分内容:一是 shims 目录的 PATH 注入,二是 shell 函数定义。这两者必须由 eval 执行,且 PATH 设置必须在 eval 之前。
以 zsh 为例(~/.zshrc),正确写法是:
export PATH="$HOME/.phpenv/bin:$PATH" eval "$(phpenv init -)"
错误写法包括:
- 把
eval放在PATH前面 →phpenv命令本身找不到 - 漏掉引号,写成
eval $(phpenv init -)→ 空格和换行被 shell 错误分割,导致函数加载失败 - 写进
~/.profile却用 zsh → 非登录 shell 不读profile,phpenv不生效
改完配置后,别用 exec $SHELL -l 这种方式重启——它会丢掉当前终端的环境变量。直接运行 source ~/.zshrc(或对应配置文件)最可靠。
phpenv install 命令默认不可用,必须手动装 php-build 插件
phpenv install 不是内置命令,它是通过插件 php-build 提供的。没装这个插件时执行会报错:phpenv: no such command 'install'。
安装插件只需一条命令:
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
之后再运行 phpenv install --list 就能看见所有可安装的 PHP 版本。注意:
- Ubuntu/Debian 用户必须先装编译依赖:
sudo apt-get install -y autoconf bison build-essential libssl-dev libcurl4-openssl-dev libreadline-dev zlib1g-dev - macOS 用户用 Homebrew 安装:
brew install autoconf automake openssl@3 bison re2c pkg-config,并确保libxml2和sqlite3已就位 - 国内用户常卡在下载 PHP 源码阶段,可设置镜像加速:
export PHP_BUILD_MIRROR=https://npmmirror.com/mirrors/php
切换版本后 php -v 不变?优先检查 which php 和 shim 是否生效
执行 phpenv global 8.3.13 后,php -v 仍显示旧版本,大概率不是 phpenv 本身的问题,而是路径冲突。
分三步排查:
- 运行
which php:如果输出是/usr/bin/php或/opt/homebrew/bin/php,说明系统自带 PHP 或其他包管理器(如 Homebrew、apt)的路径排在~/.phpenv/shims前面 - 运行
phpenv which php:应输出类似~/.phpenv/versions/8.3.13/bin/php,这是真实目标路径;若报错,说明版本未正确安装或未rehash - 运行
phpenv rehash:每次新装 PHP 版本后都必须执行,否则 shims 目录里没有对应的php符号链接
真正起作用的是 ~/.phpenv/shims/php 这个文件——它是个小脚本,运行时动态调用对应版本的二进制。如果你手动删过 shims 目录,或用 sudo 安装过其他 PHP,这个机制就容易被破坏。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











