在 Ubuntu 上编译 php-fpm,通常是为了使用特定版本或开启某些官方仓库没有的扩展。下面给你一套从源码编译 PHP 并启用 php-fpm 的完整流程(以 PHP 8.1 为例,其他版本同理)。
sudo apt update
sudo apt upgrade -y
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 包。
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
./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 的关键
| 功能 | 参数 |
|---|---|
| Redis | --enable-redis(需单独扩展) |
| PostgreSQL | --with-pdo-pgsql |
| 调试 | --enable-debug |
| 静态编译 | --disable-shared |
make -j$(nproc)
sudo make install
安装完成后:
/usr/local/php/bin/php -v
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
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
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
sudo systemctl daemon-reload
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
查看状态:
systemctl status 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;
}
sudo apt install libxxx-dev
然后重新编译。
sudo netstat -plnt | grep php
✅ 核心步骤:
./configure --enable-fpmmake && make install如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的编译方案。