在 Ubuntu 上优化 PHP 配置,通常分为 PHP-FPM / Apache 模式选择、php.ini 调整、OPcache、资源限制、慢日志、安全 等几个方面。下面以 Ubuntu + PHP-FPM(最常见,如 Nginx) 为例说明。
php -v
php -m | grep fpm
常见组合:
查看 PHP 版本和配置路径:
php --ini
路径示例:
/etc/php/8.1/fpm/php.ini
memory_limit = 256M ; 根据业务调整,不要过大
max_execution_time = 30 ; 防止脚本卡死
max_input_time = 60
post_max_size = 32M
upload_max_filesize = 32M
display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
date.timezone = Asia/Shanghai
编辑:
/etc/php/8.1/fpm/conf.d/10-opcache.ini
推荐配置:
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.save_comments=1
启用后重启:
systemctl restart php8.1-fpm
配置文件:
/etc/php/8.1/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 500
计算公式(参考):
max_children ≈ 可用内存 / 单个 PHP 进程内存
查看进程内存:
ps aux | grep php-fpm
slowlog = /var/log/php/php-slow.log
request_slowlog_timeout = 5s
ulimit -n 65535
永久:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
使用 unix socket:
listen = /run/php/php8.1-fpm.sock
Nginx:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
expose_php = Off
allow_url_fopen = Off ; 非必要关闭
disable_functions = exec,passthru,shell_exec,system
# 重启
systemctl restart php8.1-fpm
# 查看状态
systemctl status php8.1-fpm
# 测试配置
php-fpm8.1 -t
phpinfo() 检查配置htop / glances 看资源blackfire / tideways 性能分析如果你能告诉我:
我可以给你一套针对性配置。