安装 PHP
Ubuntu 的默认软件仓库中包含 PHP 包,但通常不是最新版本。如果需要最新版本的 PHP(如 PHP 8.4),可以使用 Ondřej Surý 维护的 PPA 仓库。
-
列出现有的 PHP 软件包
当需要升级 PHP 版本时,首先列出当前安装的 PHP 软件包:
dpkg -l | grep php | tee packages.txt
在安装新版本的 PHP 之前,保存当前安装的 PHP 软件包列表,以便在需要时恢复。
-
添加 PPA 仓库:
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php sudo apt update
-
安装 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
-
安装常用扩展
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 集成
- 安装 Nginx
sudo apt install nginx
- 配置 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;
}
}
- 重启 Nginx
sudo systemctl restart nginx
Apache 集成
- 安装 Apache
sudo apt install apache2
- 启用 PHP 模块
sudo a2enmod php8.4
- 重启 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