温馨提示×

Ubuntu如何配置PHP安全

小樊
33
2026-07-28 04:37:28
栏目: 编程语言

在 Ubuntu 上配置 PHP 安全,通常从 PHP 本身配置、Web 服务器配合、权限控制、运行环境隔离 等多个方面入手。下面给你一套生产环境常用、可落地的 PHP 安全配置指南(适用于 Ubuntu 20.04/22.04/24.04)。


一、基础环境建议

1. 使用官方或稳定源安装 PHP

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml

永远不要使用 Ubuntu 自带的老版本 PHP


二、PHP 核心安全配置(php.ini)

1. 找到 php.ini 文件

php --ini

常见路径:

/etc/php/8.2/fpm/php.ini
/etc/php/8.2/cli/php.ini

Web 环境一定要改 FPM 的 php.ini


2. 必须修改的安全参数(重点)

✅ 关闭错误显示(防止信息泄露)

display_errors = Off
log_errors = On
error_log = /var/log/php/error.log
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php

✅ 禁止执行危险函数

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,dl,show_source,php_uname

⚠️ 如果某些函数你确实需要(如 exec),可酌情移除


✅ 关闭文件远程包含

allow_url_fopen = Off
allow_url_include = Off

✅ 限制 PHP 暴露信息

expose_php = Off

✅ 控制文件上传

file_uploads = On
upload_max_filesize = 5M
post_max_size = 6M
max_file_uploads = 5

✅ 限制脚本执行时间

max_execution_time = 30
max_input_time = 30
memory_limit = 128M

✅ 会话安全(非常重要)

session.cookie_httponly = 1
session.cookie_secure = 1
session.use_strict_mode = 1
session.use_only_cookies = 1
session.gc_maxlifetime = 1440

三、PHP-FPM 安全配置(非常关键)

1. 使用独立用户运行 PHP

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

修改:

user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data

一个站点一个 pool(推荐)


2. 禁止 PHP 访问其他站点目录

php_admin_value[open_basedir] = /var/www/site1:/tmp

3. 限制 FPM 状态暴露

pm.status_path = /status
ping.path = /ping

并在 Nginx 中限制访问:

location ~ ^/(status|ping)$ {
    allow 127.0.0.1;
    deny all;
}

四、Web 服务器安全(Nginx 示例)

1. 禁止执行 PHP 的目录

location ~* ^/(uploads|images)/.*\.php$ {
    deny all;
}

2. 禁止访问敏感文件

location ~ /\. {
    deny all;
}

3. 强制 HTTPS

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain/privkey.pem;

五、文件与权限安全(90% 漏洞来源)

✅ 错误示例(危险)

chmod 777 /var/www/html

✅ 正确权限

sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www

上传目录禁止执行

chmod 755 uploads

六、使用防火墙 & SELinux / AppArmor

1. 防火墙

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

2. AppArmor(Ubuntu 默认)

sudo aa-status

✅ 不要关闭,必要时配置 PHP-FPM profile


七、定期更新 & 日志监控

sudo apt update && sudo apt upgrade -y

查看 PHP 日志:

tail -f /var/log/php/error.log

八、推荐安全组合(生产级)

✅ Ubuntu
✅ Nginx
✅ PHP-FPM
✅ HTTPS
✅ open_basedir
✅ disable_functions
✅ 非 root 用户
✅ 定期更新


九、快速安全检查清单 ✅

项目 是否
expose_php = Off
display_errors = Off
disable_functions
open_basedir
HTTPS
上传目录不可执行
非 root 运行

如果你愿意,我可以:

  • 帮你生成一份完整的 php.ini 安全模板
  • 针对 WordPress / Laravel / ThinkPHP 单独优化
  • 做 PHP + Nginx 安全加固实战配置

你现在用的是 Ubuntu + Nginx 还是 Apache?PHP 版本是多少?

0