Linux服务器 PHP 安全配置清单
一 基础与系统层加固
二 php.ini 关键安全参数
expose_php = Offdisplay_errors = Off;开启日志:log_errors = On,指定日志路径:error_log = /var/log/php_errors.logerror_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE,开发可 E_ALLdisable_functions = exec,system,passthru,shell_exec,proc_open,popen,eval,assert,symlink,link,escapeshellarg,escapeshellcmdallow_url_fopen = Off、allow_url_include = Offcgi.fix_pathinfo = 0session.cookie_httponly = 1、session.cookie_secure = 1、session.use_strict_mode = 1memory_limit = 128M~256M、max_execution_time = 30、max_input_vars = 3000file_uploads = On(不需要则 Off)、upload_max_filesize = 20M、post_max_size = 22M(需 ≥ 前者)opcache.enable=1;可按需设置 opcache.memory_consumption=128、opcache.interned_strings_buffer=8、opcache.max_accelerated_files=4000三 PHP-FPM 与 Web 服务器配置
listen.owner = www-data、listen.group = www-data、listen.mode = 0660SCRIPT_FILENAME、限制请求方法、开启安全头示例 Nginx 片段:
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php8.x-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location /uploads/ {
location ~ \.php$ { deny all; } # 禁止在上传目录解析 PHP
}
}
.htaccess 合理约束,禁用不必要的模块与解析器四 应用层安全与运维实践
五 验证与维护
php --ini、phpinfo();、ini_get('配置项')php-fpm -t、nginx -t;变更后平滑重载服务php_admin_value/php_admin_flag 设置关键安全项,防止应用层通过 ini_set 绕过(如 php_admin_flag[display_errors] = off)php.ini 与 FPM 配置纳入版本控制(脱敏)与自动化部署;定期执行安全基线核查与渗透测试/代码审计