温馨提示×

ubuntu如何编译php-fpm

小樊
40
2026-08-12 09:42:11
栏目: 编程语言

在 Ubuntu 上编译 php-fpm,通常是为了使用特定版本或开启某些官方仓库没有的扩展。下面给你一套从源码编译 PHP 并启用 php-fpm 的完整流程(以 PHP 8.1 为例,其他版本同理)。


一、准备编译环境

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装编译依赖

sudo apt install -y \
build-essential \
pkg-config \
libxml2-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libpng-dev \
libjpeg-dev \
libonig-dev \
libzip-dev \
libssl-dev \
libreadline-dev \
libpq-dev \
libfreetype6-dev \
autoconf \
automake \
libtool

如果你需要更多扩展(如 LDAP、Redis、GD、IMAP 等),需额外安装对应 dev 包。


二、下载 PHP 源码

1. 下载源码(示例:PHP 8.1.x)

cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.1.27.tar.gz
sudo tar -zxvf php-8.1.27.tar.gz
cd php-8.1.27

你也可以换成其他版本:

https://www.php.net/distributions/php-8.2.xx.tar.gz
https://www.php.net/distributions/php-8.3.xx.tar.gz

三、配置编译参数(关键)

1. 生成 configure

./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--with-openssl \
--with-curl \
--with-zip \
--with-zlib \
--enable-gd \
--with-freetype \
--with-jpeg

--enable-fpm 是编译 php-fpm 的关键


2. 常见可选参数

功能 参数
Redis --enable-redis(需单独扩展)
PostgreSQL --with-pdo-pgsql
调试 --enable-debug
静态编译 --disable-shared

四、编译并安装

make -j$(nproc)
sudo make install

安装完成后:

/usr/local/php/bin/php -v

五、配置 php-fpm

1. 复制默认配置

cd /usr/local/php/etc
sudo cp php-fpm.conf.default php-fpm.conf
sudo cp php-fpm.d/www.conf.default php-fpm.d/www.conf

2. 编辑 www.conf(可选)

sudo nano php-fpm.d/www.conf

常见修改:

user = www-data
group = www-data
listen = /run/php/php-fpm.sock
listen.owner = www-data
listen.group = www-data

六、创建 systemd 服务

1. 创建服务文件

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
Restart=always

[Install]
WantedBy=multi-user.target

2. 启动 php-fpm

sudo systemctl daemon-reload
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

查看状态:

systemctl status php-fpm

七、验证 php-fpm

ps aux | grep php-fpm

或在 Nginx 中测试:

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

八、常见问题

1. 缺少扩展

sudo apt install libxxx-dev

然后重新编译。

2. 端口 / sock 冲突

sudo netstat -plnt | grep php

九、总结

✅ 核心步骤:

  1. 安装依赖
  2. ./configure --enable-fpm
  3. make && make install
  4. 配置 php-fpm
  5. systemd 管理

如果你愿意,可以告诉我:

  • 你用的是 Ubuntu 20.04 / 22.04 / 24.04
  • 要编译 PHP 7.x / 8.x
  • 是否需要 Nginx / Apache
  • 是否要 OpenSSL 3 / 特定扩展

我可以给你一份完全针对你环境的编译方案

0