在 Ubuntu 上优化 PHP 配置,通常围绕性能、稳定性、安全性三个方面进行。下面以 PHP-FPM(最常见,配合 Nginx/Apache) 为例,系统说明优化方法。
推荐使用较新稳定版(如 PHP 8.1 / 8.2 / 8.3):
php -v
升级示例(以 8.2 为例):
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2-fpm php8.2-common php8.2-cli
位置通常在:
/etc/php/8.2/fpm/php.ini
memory_limit = 256M ; 根据应用调整(Laravel 建议 256M+)
max_execution_time = 60
max_input_time = 60
upload_max_filesize = 64M
post_max_size = 64M
display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
date.timezone = Asia/Shanghai
配置文件:
/etc/php/8.2/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–80MB
listen = /run/php/php8.2-fpm.sock
Nginx 中对应:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
安装:
sudo apt install php8.2-opcache
配置 /etc/php/8.2/fpm/php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 ; 生产环境关闭
fastcgi_read_timeout 60;
client_max_body_size 64m;
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo chown -R www-data:www-data /var/www
user = www-data
group = www-data
sudo apt install certbot python3-certbot-nginx
htop:查看 CPU / 内存php-fpm status:pm.status_path = /status
slowlog = /var/log/php/slow.log
request_slowlog_timeout = 5s
| 场景 | 配置建议 |
|---|---|
| 小站(1核1G) | pm=dynamic,max_children=10 |
| 中型(2核4G) | max_children=50,OPcache |
| 高并发 | pm=static + Redis 缓存 |
如果你能告诉我:
我可以给你一套精准配置方案。