在 Ubuntu 上配置 PHP 时,安全性是非常重要的一环。下面从系统层面、PHP 本身、Web 服务器、运维习惯几个角度,给你一套比较实用且安全的配置建议(以 Ubuntu + Nginx/Apache + PHP-FPM 常见环境为例)。
sudo apt update
sudo apt install php-fpm php-cli
www-datawww-data 可写根目录sudo chown -R deploy:deploy /var/www/html
sudo chmod 755 /var/www/html
常见路径:
/etc/php/8.x/fpm/php.ini
/etc/php/8.x/cli/php.ini
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval
如业务需要某些函数,再单独放开
display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
open_basedir = /var/www/html:/tmp
file_uploads = On
upload_max_filesize = 8M
post_max_size = 10M
upload_tmp_dir = /tmp
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
session.use_strict_mode = On
allow_url_include = Off
expose_php = Off
/etc/php/8.x/fpm/pool.d/www.conf
user = www-data
group = www-data
listen = /run/php/php8.x-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
pm.max_requests = 500
php_admin_value[open_basedir] = /var/www/html:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec
location ~* /uploads/.*\.php$ {
deny all;
}
server_tokens off;
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 444;
}
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
location ~ /\.git {
deny all;
}
sudo tail -f /var/log/php/php-error.log
sudo tail -f /var/log/nginx/access.log
建议:
sudo ufw allow 22,80,443/tcp
sudo ufw enable
如果你愿意,可以告诉我:
我可以给你一份可直接用的安全配置模板。