在 Linux 下优化 PHP 配置,通常分为 PHP 本身(php.ini)、PHP-FPM(如 Nginx + PHP-FPM)、OPcache、系统层面 四个方向。下面按“实用优先”的方式给你一套常见优化建议。
php -v
路径一般在:
/etc/php/8.2/cli/php.ini
/etc/php/8.2/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 24M
max_execution_time = 30
max_input_time = 60
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
apt install php-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 ; 生产环境建议 0
opcache.save_comments=1
⚠️
validate_timestamps=0时,改代码必须重启 PHP-FPM
配置文件:
/etc/php/8.2/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 = 1000
计算参考:
max_children ≈ 服务器内存 / 单个 PHP 进程内存
slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 2s
systemctl restart php8.2-fpm
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 60;
}
ulimit -n 65535
sys_temp_dir = /dev/shm
php -m 看已加载模块top / htop 看 PHP-FPM 占用strace -p <pid> 排查卡死opcache_get_status() 看缓存命中率如果你愿意,可以告诉我:
我可以直接帮你写一份可用的 php.ini + php-fpm 配置。