phpenv install 5.6.40 失败主因是未安装 php-build 插件或 php 5.6 官方源已下线;需手动克隆插件、指定镜像 url 安装,并执行 phpenv rehash 刷新 shims,同时注意系统依赖、openssl 兼容性及扩展版本限制。

phpenv 本身不提供 PHP 二进制包,它只负责调度和切换——真正下载、编译、安装 PHP 5.6 的是它的插件 php-build。如果你执行 phpenv install 5.6.40 却报错 “command not found: phpenv-install”,说明 php-build 插件没装,这是最常见卡点。
确认 php-build 插件已安装
没有 php-build,phpenv install 就是空转。必须手动拉取并放对位置:
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build- 确保
$(phpenv root)是~/.phpenv(可通过phpenv root验证) - 装完后建议运行
phpenv rehash,让 shims 生效
phpenv install 5.6.40 失败的典型原因
PHP 5.6 已于 2019 年 EOL,官方源不再提供 tarball,php-build 默认脚本会 404。你需要手动指定镜像或补丁:
- 先检查可用列表:
phpenv install --list | grep 5.6(可能只显示到 5.6.40) - 若提示 “No version match”,直接用完整 URL 安装:
phpenv install https://museum.php.net/php5/php-5.6.40.tar.bz2 - macOS 上可能因 OpenSSL 版本过高失败,加环境变量绕过:
CONFIGURE_OPTS="--with-openssl=/usr/local/opt/openssl@1.1" phpenv install 5.6.40 - Linux 编译失败常缺依赖:
sudo apt-get install -y build-essential autoconf bison libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev
安装后必须执行 phpenv rehash
很多人装完以为好了,一敲 php -v 还是旧版本——因为 phpenv 的命令代理机制(shims)没刷新:
-
phpenv rehash会扫描~/.phpenv/versions/下所有已安装版本,重建~/.phpenv/shims/php等符号链接 - 漏掉这步,
phpenv global 5.6.40或phpenv local 5.6.40都不会生效 - CI 环境中尤其容易忽略,导致测试跑在默认系统 PHP 上,而不是你指定的 5.6
PHP 5.6 的实际使用要注意兼容性断层
不是装上就能跑老项目。5.6 和现代工具链存在隐性冲突:
-
composer2.x+ 不支持 PHP 5.6,必须用composer self-update --2锁死 v1.10.22 - 很多扩展(如
redis、memcached)的最新版已弃用 5.6,需指定旧 tag 编译:pecl install redis-4.3.0 -
.php-version文件内容只能写5.6.40,不能写5.6——phpenv不做模糊匹配,写错就 fallback 到 global
真正麻烦的从来不是“怎么装”,而是装完之后发现 ext-mbstring 编译失败、openssl 版本不兼容、或者 phpunit 直接拒绝启动——这些细节不会报在 phpenv install 日志里,得看 ~/.phpenv/versions/5.6.40/var/log/build.log。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











