在 CentOS 上优化 PHP 配置,通常取决于你使用的 PHP 版本(PHP 7.x / 8.x)、运行模式(PHP-FPM / mod_php / CLI) 以及业务场景(Web 高并发 / 后台任务 / 内存敏感)。下面给你一套实战向的 CentOS PHP 优化指南,可直接照着改。
php -v
php -m
查看 PHP 运行模式:
php -i | grep "Server API"
常见结果:
FPM/FastCGI → 优化 php-fpm.confCLI → 优化 php.iniApache 2.0 Handler → mod_php(不推荐新项目)/etc/php-fpm.d/www.conf
# 或
/etc/php-fpm.conf
dynamic 或 ondemand)pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500
说明:
max_children ≈ 内存 / 单进程内存max_requests 防止内存泄漏ondemand)pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
路径示例:
/etc/php.ini
# 或
/etc/php/7.4/fpm/php.ini
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
upload_max_filesize = 20M
post_max_size = 24M
max_execution_time = 30
max_input_time = 60
memory_limit = 256M
(Laravel / Symfony 建议 256M+)
expose_php = Off
display_errors = Off
log_errors = On
yum install php-opcache -y
[opcache]
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
生产环境
validate_timestamps=0,改代码后重启 PHP-FPM
ulimit -n 65535
永久生效:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
/etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
sysctl -p
systemctl restart php-fpm
php-fpm -t # 配置语法检查
查看进程:
ps aux | grep php-fpm
✅ Web 服务:
✅ 后台任务(CLI):
如果你愿意,可以告诉我:
我可以直接帮你给一套可复制的配置文件。