phpenv的PHP版本目录在$HOME/.phpenv/versions/下,每个子目录(如8.3.13)包含完整环境;备份只需压缩对应子目录,还原后须执行phpenv rehash。

phpenv 本身不提供“环境备份”功能,所谓备份,实际是手动归档版本目录 + 记录配置状态。
phpenv 的 PHP 版本目录在哪?
每个安装的 PHP 版本都完整存放在 $HOME/.phpenv/versions/ 下,例如:
-
$HOME/.phpenv/versions/8.3.13/—— 含 bin/php、lib/php、etc/php.ini 等全套文件 -
$HOME/.phpenv/versions/7.4.33/—— 独立路径,互不干扰
这些目录就是你最核心的“环境单元”。只要保留它们,就等于保留了该版本的全部能力(含扩展、ini 配置、二进制)。
怎么安全备份已安装的 PHP 版本?
直接压缩对应子目录即可,无需额外导出或 dump:
立即学习“PHP免费学习笔记(深入)”;
- 备份单个版本:
tar -czf php-8.3.13-backup.tar.gz ~/.phpenv/versions/8.3.13 - 备份所有版本:
tar -czf phpenv-versions-backup.tar.gz ~/.phpenv/versions/ - 还原时解压到原位置:
tar -xzf php-8.3.13-backup.tar.gz -C ~/.phpenv/versions/
注意:还原后必须运行 phpenv rehash,否则 php 命令仍无法识别新恢复的版本。
哪些配置需要单独记录?
phpenv 自身不保存全局或项目级版本绑定关系,这些信息分散在三处,必须人工确认并存档:
- 全局版本:
cat ~/.phpenv/version(若存在)或执行phpenv global查看 - 当前项目本地版本:
cat .php-version(在项目根目录下) - 当前 shell 会话版本:
phpenv shell输出(仅临时生效,重启终端即失效,通常无需备份)
建议把 .php-version 文件纳入 Git 管理;~/.phpenv/version 可手动复制一份为 phpenv-global-version.txt 存档。
为什么不能只备份 ~/.phpenv 整个目录?
可以,但不推荐。因为 ~/.phpenv/bin/ 和 ~/.phpenv/libexec/ 是纯脚本逻辑,重装 phpenv 即可恢复;而 versions/ 目录体积大、编译耗时长,才是真正的备份价值所在。盲目备份整个 ~/.phpenv 容易混入损坏的 shim 或过期插件缓存,反而增加还原风险。



















