戏里戏外

Ubuntu 上安装和配置 PHP

2025-03-11#PHP#Ubuntu

安装 PHP

Ubuntu 的默认软件仓库中包含 PHP 包,但通常不是最新版本。如果需要最新版本的 PHP(如 PHP 8.4),可以使用 Ondřej Surý 维护的 PPA 仓库。

  1. 列出现有的 PHP 软件包

    当需要升级 PHP 版本时,首先列出当前安装的 PHP 软件包:

    dpkg -l | grep php | tee packages.txt
    

    在安装新版本的 PHP 之前,保存当前安装的 PHP 软件包列表,以便在需要时恢复。

  2. 添加 PPA 仓库:

    sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
    sudo apt update
    
  3. 安装 PHP 8.4(或其他版本):

    sudo apt install php8.4-cli
    
    # 安装 PHP-FPM(推荐用于 Nginx 服务器集成)
    sudo apt install php8.4-fpm
    

    如果需要安装 Apache 模块,请使用:

    sudo apt install libapache2-mod-php8.4
    
  4. 安装常用扩展

    sudo apt install php8.4-common php8.4-{bcmath,bz2,curl,gd,gmp,imagick,intl,mbstring,mysql,opcache,readline,xml,zip}
    

验证安装

安装完成后,可以通过以下命令验证 PHP 版本:

php -v

如果安装了 PHP-FPM,可以检查其状态:

sudo systemctl status php8.4-fpm

Web 服务器集成

Nginx 集成

  1. 安装 Nginx
sudo apt install nginx
  1. 配置 Nginx 以使用 PHP-FPM
server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
  1. 重启 Nginx
sudo systemctl restart nginx

Apache 集成

  1. 安装 Apache
sudo apt install apache2
  1. 启用 PHP 模块
sudo a2enmod php8.4
  1. 重启 Apache
sudo systemctl restart apache2

管理多个 PHP 版本

如果需要在同一系统上运行多个 PHP 版本,可以使用 update-alternatives 命令来切换默认版本:

# 查看可用的 PHP 版本
sudo update-alternatives --config php

# 设置默认 PHP 版本
sudo update-alternatives --set php /usr/bin/php8.4

配置 PHP

PHP 的主要配置文件是 php.ini,根据安装方式不同,其位置可能在:

  • CLI 模式:/etc/php/8.4/cli/php.ini
  • FPM 模式:/etc/php/8.4/fpm/php.ini/etc/php/8.4/fpm/pool.d/www.conf
  • Apache 模块:/etc/php/8.4/apache2/php.ini

常见配置调整:

; 最大上传文件大小
upload_max_filesize = 20M
post_max_size = 21M

; 内存限制
memory_limit = 256M

; 执行时间限制
max_execution_time = 60

; 错误报告
error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

如果需要配置 FPM 池,可以在 /etc/php/8.4/fpm/pool.d/www.conf 文件中进行配置:

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

修改配置后,需要重启 PHP-FPM 或 Web 服务器:

sudo systemctl restart php8.4-fpm

如果使用 Apache 作为 Web 服务器,需要使用命令 sudo systemctl restart apache2 重启 Apache。

卸载旧版本 PHP

如果需要卸载旧版本 PHP,可以使用以下命令:

# 卸载 PHP 8.3(示例)
sudo apt purge '^php8.3.*'

参考资料

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian