CentOS PHP配置注意事项
sudo yum update -y更新系统及软件包,修补已知安全漏洞,避免因系统版本过旧引发兼容性问题。yum自动解决依赖(例如sudo yum install php php-mysql会自动安装MySQL驱动)。display_errors设为Off,防止敏感信息(如数据库凭据、代码逻辑)泄露给终端用户;开启错误日志(log_errors = On)并指定日志路径(如error_log = /var/log/php_errors.log),便于后续排查问题。upload_max_filesize(单个文件最大大小,如10M)和post_max_size(POST请求总大小,需大于等于upload_max_filesize),避免恶意用户上传超大文件消耗服务器资源。php.ini中通过disable_functions禁用高危系统函数(如system、exec、shell_exec、passthru),若应用需调用系统命令(如运维脚本),可保留shell_exec但需严格控制调用权限。memory_limit根据服务器内存设置(如1GB内存可设为128M,2GB及以上设为256M),避免脚本占用过多内存导致服务器崩溃。date.timezone为应用所需时区(如Asia/Shanghai),避免日期函数(如date())返回错误时间。opcache.enable=1开启Opcode缓存,减少脚本重复编译时间(需安装php-opcache扩展),显著提升PHP执行效率。pm = dynamic)适合大多数场景,需设置pm.max_children(最大子进程数,如50,根据服务器内存计算:内存总量/单个进程内存消耗)、pm.start_servers(启动时的进程数,如5)、pm.min_spare_servers(最小空闲进程数,如5)、pm.max_spare_servers(最大空闲进程数,如35),避免频繁创建/销毁进程消耗资源。pm.max_requests = 500,设置每个子进程处理的最大请求数,超过后自动重启,防止内存泄漏累积。listen = /run/php-fpm/www.sock)替代TCP端口(如127.0.0.1:9000),减少网络开销;若用TCP端口,需确保防火墙放行。user和group设置为Web服务器运行用户(如Nginx用nginx,Apache用apache),避免PHP进程以root权限运行,降低安全风险。/etc/nginx/conf.d/default.conf)中添加PHP处理块,确保fastcgi_pass指向PHP-FPM的监听地址(如unix:/run/php-fpm/www.sock),并通过fastcgi_param SCRIPT_FILENAME传递脚本路径。mod_proxy_fcgi模块,在虚拟主机中添加<FilesMatch \.php$>块,设置SetHandler "proxy:fcgi://localhost:9000",使Apache将PHP请求转发至PHP-FPM。sudo systemctl restart nginx/apache)和PHP-FPM(sudo systemctl restart php-fpm)使配置生效。firewall-cmd开放HTTP(80端口)和HTTPS(443端口),关闭不必要的端口(如FTP、Telnet),限制外部对PHP服务的非法访问。Enforcing模式,需调整端口策略(如semanage port -a -t http_port_t -p tcp 80)或临时设置为Permissive模式(setenforce 0),避免因SELinux限制导致PHP无法正常运行。sudo yum update php*更新PHP及相关扩展,及时修复安全漏洞,降低被攻击风险。gzip on; gzip_types text/plain text/css application/json),压缩静态文件(CSS、JS、HTML),减少传输数据量,提升页面加载速度。pm.max_children(避免设置过大导致内存耗尽)和request_terminate_timeout(如30s,防止长时间运行的脚本阻塞进程),平衡性能与资源利用率。/var/log/php_errors.log)和PHP-FPM状态页(sudo php-fpm -t),监控脚本执行时间、内存占用等指标,及时发现并解决性能瓶颈。