在 Ubuntu 系统上配置 PHP 是搭建 Web 环境的核心步骤,最佳实践是使用官方 PPA 安装最新稳定版 PHP,并结合 Nginx 或 Apache 2.4 运行,同时通过调整 PHP-FPM 参数与安全配置来保障性能与稳定性,下面从安装、集成、调优到安全,分层展开完整方案,并融入酷番云服务器实战经验。
安装 PHP:选择源与版本
推荐通过 Ondřej Surý 维护的 PPA 安装,这是社区公认最安全、更新及时的源,执行以下命令:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-curl php8.3-xml
- 当前长期支持版本为 3,兼顾兼容性与新特性,生产环境首选。
- 如果项目需要旧版本(如 7.4),同样通过该 PPA 安装,系统可共存多个版本,通过
update-alternatives切换默认 CLI。
经验案例:在酷番云弹性云服务器上,我们使用上述方法安装 PHP 8.3,并利用酷番云快照功能在配置完成前创建系统盘快照,一旦需要回滚版本或恢复默认配置,两分钟内即可还原,极大降低了操作风险。
集成 Web 服务器:Nginx 与 PHP-FPM
现代架构推荐 Nginx + PHP-FPM,分离静态资源与动态解析,资源占用低且并发能力强。
配置 PHP-FPM
PHP-FPM 默认监听 /run/php/php8.3-fpm.sock,确保服务已启动:

sudo systemctl enable php8.3-fpm sudo systemctl start php8.3-fpm
配置 Nginx 站点
在 /etc/nginx/sites-available/ 中新建配置文件,关键部分:
server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
- 使用 Unix Socket 而非 TCP,减少网络开销,提升本地响应速度。
- 通过
fastcgi_pass直接指定 socket 路径,避免不必要的端口监听。
性能调优:针对实际负载调整参数
PHP-FPM 的配置直接影响并发处理能力,重点修改 /etc/php/8.3/fpm/pool.d/www.conf:
- pm = dynamic:动态管理子进程,适合大多数场景。
- pm.max_children = 50:根据服务器内存调整,每进程约 20-30MB,总量不超过可用内存的 60%。
- pm.start_servers = 5、pm.min_spare_servers = 5、pm.max_spare_servers = 10:保持基础空转进程,避免频繁创建销毁。
- request_terminate_timeout = 60:防止长时间脚本占满进程。
- 启用 OPcache:在
/etc/php/8.3/cli/conf.d/10-opcache.ini中设置opcache.enable=1,opcache.memory_consumption=128
,大幅提升代码执行效率。
调优后验证:使用 php-fpm8.3 -t 测试配置,systemctl reload php8.3-fpm 生效,通过 ab 或 wrk 压测,观察请求延迟与进程数变化。
安全加固:多维度防护
PHP 配置需兼顾功能与安全,在 /etc/php/8.3/fpm/php.ini 中调整:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec:禁用高危函数,防止 Webshell 执行。expose_php = Off:隐藏 PHP 版本信息,减少被针对性攻击的可能。open_basedir = /var/www/html:/tmp:限制脚本文件访问范围,仅允许操作站点目录与临时目录。cgi.fix_pathinfo = 0:防止 Nginx 解析漏洞(如上传图片马时被解析为 PHP)。- 定期更新 PHP 版本,酷番云提供 自动化补丁服务,可通过控制台设置定时任务检查并安装安全更新,无需手动登录服务器。
经验案例:酷番云上的 PHP 环境迁移
我们曾将一套旧版 PHP 7.0 应用迁移至酷番云新服务器,面临版本升级与配置兼容问题,方案如下:
- 在酷番云控制台创建新实例,预装 Ubuntu 22.04,通过 PPA 安装 PHP 8.1(当时最新 LTS)。
- 利用酷番云 对象存储 临时存放旧站代码与数据库导出文件,
wget直接拉取,比传统 FTP 快 5 倍以上。 - 配置 PHP-FPM 与 Nginx 后,开启酷番云

Web 应用防火墙
,自动过滤 SQL 注入与 XSS 请求,弥补了旧应用自身安全缺陷。 - 最后通过 DNS 解析切换 实现无缝上线,全程停机时间不超过 3 分钟。
相关问答
问:如何在同一台 Ubuntu 上同时运行多个 PHP 版本?
答:通过 Ondřej PPA 安装多版本(如 php7.4-fpm 和 php8.3-fpm),每个版本独立监听不同 Socket 或端口(如 /run/php/php7.4-fpm.sock 和 /run/php/php8.3-fpm.sock),在 Nginx 站点配置中,根据站点需求分别指定 fastcgi_pass 指向对应 Socket,即可实现不同站点使用不同 PHP 版本,互不干扰。
问:PHP 配置完成后,性能依旧很慢,还有哪些常见瓶颈?
答:除了 PHP-FPM 参数,还需检查以下方面:
- MySQL 查询:开启慢查询日志,分析索引缺失。
- OPcache 命中率:确保
opcache.revalidate_freq设置为 2,避免频繁检查文件修改。 - 磁盘 I/O:将 session 存储改为 Redis 或 Memcached,减少文件读写。
- 网络延迟:如果使用外部数据库,尽量与 PHP 服务器同区域部署,酷番云内网传输免费且延迟低于 1ms。
配置 PHP 时你遇到过哪些坑?或者你有更高效的安全方案?欢迎在评论区分享经验,一起探讨更好的实践!
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/719112.html

