在 Debian 上从源码编译安装 PHP,下面给你一套通用、可实操的流程(以 PHP 8.2 / 8.3 为例,适用于 Debian 11/12)。
如果你只是想用 PHP,而不是定制编译,强烈建议用 apt 安装,会省很多事。
先安装必要的依赖:
sudo apt update
sudo apt install -y \
build-essential \
pkg-config \
autoconf \
automake \
libtool \
re2c \
bison \
curl \
wget \
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、imap),再补装对应
-dev包。
去 PHP 官方下载你需要的版本:
cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.2.18.tar.gz
sudo tar -zxvf php-8.2.18.tar.gz
cd php-8.2.18
(版本号可换)
先查看可用参数:
./configure --help
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-mbstring \
--enable-sockets \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-openssl \
--with-curl \
--with-zlib \
--with-zip \
--with-gd \
--with-jpeg \
--with-freetype \
--with-pdo-mysql \
--with-pdo-pgsql \
--with-readline \
--without-pear
✅ 说明:
--prefix:PHP 安装目录--enable-fpm:启用 PHP-FPM(Nginx 必备)--with-pdo-mysql:MySQL 支持make -j$(nproc)
sudo make install
⚠️ 编译时间取决于 CPU,一般 5–20 分钟。
sudo mkdir -p /usr/local/php/etc
sudo cp php.ini-development /usr/local/php/etc/php.ini
生产环境可用:
php.ini-production
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
echo 'export PATH=/usr/local/php/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证:
php -v
创建服务文件:
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
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
php -v
php-fpm -v
ps aux | grep php-fpm
sudo apt install libxxx-dev
make clean
然后重新 ./configure
✅ 生产环境:
apt install php php-fpm✅ 编译适合场景:
如果你愿意,我可以:
直接告诉我你的 Debian 版本 + 使用场景 即可。