在 Debian 上配置 PHP 安全,通常需要从 系统层面、PHP 本身、Web 服务器、应用层 四个维度来做。下面给你一套实用且可落地的安全配置方案(以 Debian + PHP-FPM + Nginx/Apache 为主)。
sudo apt update
sudo apt install php php-fpm php-cli
避免随意添加第三方 PHP 源,防止被植入后门。
只安装需要的扩展:
php -m
删除无用扩展(如 php-imap、php-xmlrpc 等高风险模块)。
路径通常为:
/etc/php/8.x/fpm/php.ini/etc/php/8.x/cli/php.inidisable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,dl
expose_php = Off
allow_url_fopen = Off
allow_url_include = Off
open_basedir = /var/www/html:/tmp
upload_tmp_dir = /tmp
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
session.use_strict_mode = On
user = www-data
group = www-data
Nginx 示例:
location ~* \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.x-fpm.sock;
}
pm = dynamic
pm.max_children = 50
pm.max_requests = 500
location ~ /\. {
deny all;
}
location /uploads/ {
location ~ \.php$ { deny all; }
}
<Directory /var/www/html/uploads>
php_admin_flag engine off
</Directory>
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
关键原则:
tail -f /var/log/php_errors.log
journalctl -u php8.x-fpm
可选:
apt upgradecomposer audit(Laravel / Symfony 等)❌ eval($_GET['x'])
❌ include($_GET['file'])
❌ 777 权限
❌ 公开 .env
如果你愿意,我可以:
你现在的 Debian 和 PHP 版本是多少?