答案是:php 编译报“zlib.h: no such file or directory”本质是缺少 zlib 开发头文件,需安装对应系统的 zlib-devel 或 zlib1g-dev 包,并验证 /usr/include/zlib.h 存在及 pkg-config --modversion zlib 可正常输出版本。

PHP 8.5.7 目前并不存在——截至 2026 年 6 月,PHP 官方最新稳定版是 PHP 8.3,PHP 8.4 已于 2024 年 11 月正式发布,而 PHP 8.5 尚未发布,也无任何官方 RC 或 GA 版本。你看到的 “PHP 8.5.7” 极大概率是:
- 非官方魔改版、测试分支(如
php-src的main或某 fork 分支) - 宝塔/第三方编译脚本误标版本号(例如把
8.4.7显示为8.5.7) - 源码未同步完整或本地构建环境混乱
但无论版本名如何,报错 zlib.h: No such file or directory 的本质是:编译 PHP 或扩展时缺少 zlib 开发头文件,和是否真为 8.5 无关。下面按真实场景分步解决:
缺少 zlib.h —— 系统级开发依赖未装
zlib.h 是 zlib 库的 C 头文件,不属于 PHP 自带,而是操作系统提供的开发包。编译 PHP 或启用 --with-zlib、安装 zlib 扩展时必须存在。
确认是否缺失:
# Ubuntu/Debian dpkg -l | grep zlib1g-dev # CentOS/RHEL/Rocky rpm -q zlib-devel
若无输出,说明没装。
安装对应开发包:
- Ubuntu/Debian:
sudo apt update && sudo apt install zlib1g-dev
- CentOS 7/8、Rocky Linux 9:
sudo yum install -y zlib-devel # CentOS 7 sudo dnf install -y zlib-devel # CentOS 8+/Rocky 9
✅ 装完后验证:
ls /usr/include/zlib.h应存在;pkg-config --modversion zlib应输出类似1.2.13。
Docker 中编译 PHP(如 php:8.5-fpm 镜像)报 zlib.h 找不到
官方 php:8.5-fpm 镜像(实际是 8.4 或测试镜像)默认只含运行时,不含编译工具链和 -dev 包。
正确做法(Dockerfile 示例):
FROM php:8.4-fpm # 用真实存在的稳定标签,别写 8.5
# 安装编译依赖(关键!)
RUN apt-get update && apt-get install -y \
zlib1g-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
gcc \
make \
autoconf \
automake \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# 启用 zlib(PHP 默认已内置,无需额外装扩展,但确保 configure 时能找到头文件)
# 如需重编译或装其他扩展(gd、zip 等),此时可安全执行 phpize/configure
⚠️ 注意:
php:8.5-fpm是非官方或预发布镜像,行为不可靠。请改用php:8.4-fpm或php:8.3-fpm。
源码编译 PHP 时 configure 报 zlib.h 找不到
即使装了 zlib-devel,./configure 仍可能找不到头文件,常见于:
-
zlib装在非标准路径(如/opt/zlib) -
PKG_CONFIG_PATH未包含 zlib.pc文件路径
解决方法:
# 查看 zlib.pc 是否存在 find /usr -name "zlib.pc" 2>/dev/null # 通常在 /usr/lib/pkgconfig/zlib.pc 或 /usr/share/pkgconfig/zlib.pc # 若存在但 configure 找不到,临时指定路径 export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" ./configure --with-zlib --with-openssl ...
如 zlib 装在自定义路径(例 /opt/zlib),则:
./configure --with-zlib=/opt/zlib ...
手动安装 zlib 扩展(极少需要,PHP 8+ 默认内置)
PHP 自 7.0 起 zlib 功能(如 gzopen, gzencode)已静态编译进核心,无需单独启 extension=zlib.so。
你真正需要的,只是确保编译时能链接 zlib 库——装好 zlib-devel 即可。
如果非要手动编译扩展(比如调试用):
cd /path/to/php-src/ext/zlib phpize ./configure --with-php-config=/usr/local/bin/php-config make && sudo make install
但注意:此扩展仅提供 zlib.c 接口包装,实际压缩能力来自 PHP 内置 zlib 支持,不是必需项。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











