优化 Ubuntu 上的 PHP 配置,通常分为 PHP 运行模式(FPM / CLI / Apache mod_php)、php.ini 参数调优、OPcache / 缓存加速、资源与进程管理 以及 安全加固 几个方面。下面给你一套比较实用、可落地的优化指南(以 PHP 8.x + Ubuntu 20.04/22.04 + Nginx/FPM 为例,Apache 类似)。
php -v
php -m | grep fpm
常见组合:
php-fpmmod_php 或 php-fpmphp-cli不同模式配置文件位置不同:
# FPM
/etc/php/8.x/fpm/php.ini
/etc/php/8.x/fpm/pool.d/www.conf
# CLI
/etc/php/8.x/cli/php.ini
编辑:
sudo nano /etc/php/8.x/fpm/php.ini
memory_limit = 256M ; 普通应用 128~512M
max_execution_time = 30 ; API 可 60,脚本批处理可 300
max_input_time = 60
upload_max_filesize = 32M
post_max_size = 48M
max_file_uploads = 20
display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
session.gc_probability = 1
session.gc_divisor = 1000
session.save_path = /var/lib/php/sessions
sudo phpenmod opcache
编辑:
[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 ; 生产环境关闭
opcache.jit_buffer_size=128M
opcache.jit=1205 ; PHP 8 JIT
⚠️ 开发环境
validate_timestamps=1
编辑:
sudo nano /etc/php/8.x/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
计算参考:
max_children ≈ 内存 / 单个PHP进程(约30~50M)
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s
user = www-data
group = www-data
ulimit -n 65535
/etc/security/limits.conf
www-data soft nofile 65535
www-data hard nofile 65535
sudo chown -R www-data:www-data /var/lib/php/sessions
expose_php = Off
allow_url_fopen = Off ; 如不需要
disable_functions = exec,passthru,shell_exec,system
sudo systemctl restart php8.x-fpm
sudo systemctl restart nginx
验证:
php -i | grep opcache
❌ 盲目调大 memory_limit
❌ 开 display_errors 到生产
❌ FPM pm.max_children 过大导致 OOM
❌ 忽略 OPcache
如果你愿意,可以告诉我:
我可以直接给你一套 精准配置模板。