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

sudo apt updatesudo 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/srcsudo 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.gzhttps://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 的关键
--enable-redis(需单独扩展)PostgreSQL--with-pdo-pgsql调试--enable-debug静态编译--disable-sharedmake -j$(nproc)sudo make install
安装完成后:
/usr/local/php/bin/php -vcd /usr/local/php/etcsudo 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-datagroup = 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-reloadsudo systemctl start php-fpm
sudo systemctl enable php-fpm
查看状态:
systemctl status php-fpmps 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如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的编译方案。