把之前编译的PHP 7.3.33彻底清理
cd ~/php-src-php-7.3.33
make clean
cd ~
rm -rf ~/php-src-php-7.3.33
获取并解压PHP 8.3.23源码
wget https://github.com/php/php-src/archive/refs/tags/php-8.3.23.zip
unzip php-8.3.23.zip
cd php-src-php-8.3.23
安装编译依赖
sudo apt update
sudo apt install -y build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libzip-dev libpng-dev libjpeg-dev libonig-dev libsqlite3-dev libreadline-dev
配置编译选项
我们启用所有需要的功能,并指定安装路径。
如
./buildconf --force
./configure \
--prefix=/usr/local/php83 \
--with-config-file-path=/usr/local/php83/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-debug \
--enable-mbstring \
--with-curl \
--with-openssl \
--with-zip \
--with-zlib \
--with-gd \
--enable-pdo \
--with-pdo-mysql \
--with-mysqli \
--enable-phar \
--enable-cli
--prefix=/usr/local/php83:把PHP 8.3安装到这个独立目录,和系统自带的PHP完全隔离。
--with-config-file-path=...:指定 php.ini 的位置。
--enable-fpm:启用PHP-FPM,用于Web服务。
--with-fpm-user=www-data:FPM进程以 www-data 用户运行。
--enable-debug:保留调试模式
--enable-phar:显式启用Phar扩展,默认开启。
其他是常用扩展
编译和安装
make -j$(nproc)
sudo make install
配置 php.ini 和 php-fpm.conf
sudo cp php.ini-development /usr/local/php83/etc/php.ini
sudo nano /usr/local/php83/etc/php.ini
open_basedir = /var/www/html/src
配置 php.ini
去掉前面的分号,并设置为你项目的目录
; 确保错误显示是开启的,方便调试
display_errors = On
; 确保没有禁用任何函数
disable_functions =
配置PHP-FPM
复制FPM的主配置文件
sudo cp /usr/local/php83/etc/php-fpm.conf.default /usr/local/php83/etc/php-fpm.conf
复制池配置文件
sudo cp /usr/local/php83/etc/php-fpm.d/www.conf.default /usr/local/php83/etc/php-fpm.d/www.conf
启动PHP-FPM
创建一个软链接,方便管理
sudo ln -s /usr/local/php83/sbin/php-fpm /usr/local/bin/php-fpm83
启动它
sudo php-fpm83
检查是否成功启动,应该能看到www-data用户的进程
ps aux | grep php-fpm
配置Nginx使用新的PHP-FPM
让Web服务器把PHP请求交给我们的新PHP 8.3处理。
sudo nano /etc/nginx/sites-available/default
验证和
找到 location ~ \.php$ 这一段,修改 fastcgi_pass 参数:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; <-- 注释掉或删掉这行
# 改成我们新PHP-FPM的监听地址
fastcgi_pass 127.0.0.1:9000;
}
重启Nginx:
sudo systemctl restart nginx
收尾
-
验证PHP版本 : 在你的Web目录
/var/www/html/src/创建一个info.php文件:<?php phpinfo(); ?>浏览器访问
http://your-server-ip/src/info.php,页面顶部应该显示 PHP Version 8.3.23。 -
验证命令行:
/usr/local/php83/bin/php -v应该也显示 8.3.23。
让你在任何地方都能直接用 php83 命令
sudo ln -s /usr/local/php83/bin/php /usr/local/bin/php83