phpenv 本身不提供 PHP 5.6 预编译包,必须通过 php-build 插件从源码编译安装;需先安装插件、依赖及兼容性环境变量,再执行 phpenv install 5.6.40(唯一支持新系统的可行方式)。
php
env 本身不直接提供 PHP 5.6 的预编译二进制包,但能通过
插件从源码编译安装 —— 这是目前在现代系统(如 Ubuntu 22.04+/macOS Sonoma+)上可靠运行 PHP 5.6 的唯一可行方式。
phpenv install 5.6.40 失败?先装 php-build 插件
默认的 phpenv 不带构建能力,
命令依赖
插件。没装它时执行
会报错:
或直接卡在“no build definition found”。
运行
安装插件
确保已安装编译依赖:Ubuntu 上跑
;macOS 用
PHP 5.6 已停止维护,部分新版 OpenSSL/ICU 会导致 configure 失败,建议加环境变量降级兼容:
(Ubuntu 路径需核对,可用
确认)
编译安装 php 5.6.40 的实操要点
PHP 5.6 最后一个安全版本是
(2019 年发布),必须用这个号,别试
或
—— 它们在新内核或 GCC 12+ 下大概率编译失败。
执行
,全程约 8–15 分钟,期间不要中断终端
若中途报
,说明 OpenSSL 版本太高,需加
(但会禁用 cURL/HTTPS,仅限离线调试)
成功后运行
,再执行
应输出
;若仍显示其他版本,运行
刷新 shim
验证扩展是否就位:
—— 注意:PHP 5.6 默认不带
,需手动编译启用(见下一条)
老旧项目常依赖的扩展怎么启用
很多 PHP 5.6 项目硬编码调用
或
,而这些扩展在默认编译中已被移除或禁用。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
扩展:PHP 5.6 编译时默认不启用,且自 PHP 7.0 起彻底废弃。你**不能也不该**在 5.6 中重新启用它 —— 正确做法是用
或
替换代码,或临时打补丁(风险极高)
:需额外下载源码并链接编译。先
(Ubuntu)或
(macOS),再设置
,然后重装
、
等常见扩展:确保系统已装对应 dev 包(如
、
),它们会在 configure 阶段自动检测并启用
项目级配置和容易忽略的坑
即使 PHP 5.6.40 装好了,旧项目仍可能报
或
—— 这些不是版本问题,而是运行时环境缺失。
在项目根目录创建
文件,内容仅一行:
,避免全局污染其他项目
PHP 5.6 默认关闭
且
设为
,老旧项目常靠
触发,务必检查
路径:
查二进制位置,再找同级
关键陷阱:
管理的是 CLI 模式下的 PHP,但 Web 服务器(Apache/Nginx)用的是自己加载的模块或 CGI。若你在浏览器访问出错,跟 phpenv 无关 —— 必须单独配置 Web 服务器指向
或使用
(需手动启停)
真正麻烦的从来不是装上 PHP 5.6,而是让它的扩展、时区、错误级别、Web 服务绑定全部对齐 —— 每个环节都可能静默失败。建议先用
启动内置服务器验证 CLI 环境,再动 Web 服务器配置。
php-buildphpenv installphp-buildphpenv install 5.6.40command not found: phpenv-installgit clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-buildsudo apt install -y build-essential libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev autoconf pkg-configbrew install autoconf automake openssl@1.1 libxml2 libpng jpeg freetypeexport PHP_BUILD_CONFIGURE_OPTS="--with-openssl=/usr/lib/x86_64-linux-gnu --enable-opcache=no"find /usr -name openssl.pc5.6.405.6.05.6.30phpenv install 5.6.40error: ‘SSLv3_method’ undeclared--without-opensslphpenv global 5.6.40php -vPHP 5.6.40phpenv rehashphp -m | grep -E 'mysql|mysqli|mcrypt'mcryptmysql_connect()mcrypt_encrypt()mysqlmysqliPDOmcryptapt install libmcrypt-devbrew install mcryptexport PHP_BUILD_CONFIGURE_OPTS="--with-mcrypt"5.6.40intlgdlibicu-devlibfreetype6-devFatal error: Call to undefined function mysql_connect()date.timezone not set.php-version5.6.40display_errorserror_reportingE_ALL & ~E_NOTICE & ~E_STRICTini_set('display_errors', 1)php.iniphpenv which phpetc/php.iniphpenv~/.phpenv/versions/5.6.40/bin/php-cgiphp-fpmphp -S