Ubuntu 上安装和配置 PHP
安装 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,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.4(示例)
sudo apt purge '^php8.4.*'
参考资料
PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian