在 Debian 上编译 PHP 有两种常见场景:从源码编译最新版 PHP,或重新编译 Debian 自带的 PHP 源码包。下面我按“最常用、最稳妥”的方式给你一个完整流程,并附上常见坑位说明。
sudo apt update
sudo apt install -y \
build-essential \
pkg-config \
autoconf \
automake \
libxml2-dev \
libsqlite3-dev \
libssl-dev \
libcurl4-openssl-dev \
libpng-dev \
libjpeg-dev \
libonig-dev \
libzip-dev \
libreadline-dev \
libpq-dev \
libfreetype6-dev
如果你需要更多扩展(如
gd、ldap、snmp),按需再装对应-dev包。
以 PHP 8.2 为例:
cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.2.22.tar.gz
sudo tar -xvf php-8.2.22.tar.gz
cd php-8.2.22
你也可以换成:
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--enable-mbstring \
--enable-opcache \
--with-openssl \
--with-curl \
--with-zip \
--with-zlib \
--with-readline \
--with-pdo-mysql \
--with-mysqli
✅ 常用说明:
--prefix:PHP 安装路径enable-fpm:PHP-FPM(Web 必选)--with-pdo-mysql / --with-mysqli:MySQL 支持查看所有参数:
./configure --help
make -j$(nproc)
sudo make install
⚠️ 编译时间取决于 CPU,一般 3–10 分钟。
sudo cp php.ini-production /usr/local/php/etc/php.ini
PHP-FPM 配置:
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
创建服务文件:
sudo nano /etc/systemd/system/php-fpm.service
内容示例:
[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
/usr/local/php/bin/php -v
适合你 不想脱离 Debian 生态 的情况。
sudo apt install -y build-essential devscripts debhelper
apt source php8.2
cd php8.2-*
sudo apt build-dep php8.2
dpkg-buildpackage -b -uc -us
生成 .deb 文件,可用 apt install ./xxx.deb 安装。
-dev 包apt search xxx | grep dev
make -j2
或先关闭其他服务。
建议:
/usr/local/php| 场景 | 建议 |
|---|---|
| 学习 / 新项目 | 源码编译 |
| 生产环境 | apt + 必要时源码 |
| 修改 PHP 内核 / 打补丁 | Debian 源码包 |
| 需要多版本 | 源码 + FPM |
如果你愿意,可以告诉我:
我可以直接给你 一条命令级定制方案。