1. 配置文件路径确认
Linux环境下,PHP的主要配置文件php.ini路径因安装方式(源码编译/包管理器)和运行模式(CLI/FPM/Apache/Nginx)而异。常用命令定位生效配置文件:php -i | grep 'Loaded Configuration File'(CLI模式);对于Web模式,可通过phpinfo()函数输出的“Loaded Configuration File”字段查看。修改后需重启对应服务(如systemctl restart apache2或systemctl restart php-fpm)使变更生效。
2. 安全配置强化
disable_functions参数禁用可能被恶意利用的系统函数(如exec、system、passthru、shell_exec、curl_exec等),减少远程代码执行风险。示例:disable_functions = exec,system,passthru,shell_exec。expose_php = Off,避免HTTP响应头中泄露PHP版本(如X-Powered-By: PHP/8.0),降低针对性攻击概率。open_basedir参数限定PHP脚本可访问的目录(如open_basedir = /var/www/html:/tmp),防止恶意脚本遍历服务器其他目录。display_errors = Off,避免将数据库结构、路径等敏感信息直接暴露给用户;同时开启log_errors = On,将错误日志记录到指定文件(如error_log = /var/log/php_errors.log)便于排查。3. 性能优化调整
opcache.enable = On,并根据服务器内存调整opcache.memory_consumption(如128M)、opcache.max_accelerated_files(如10000)等参数。memory_limit(如128M或256M),避免单个脚本占用过多内存导致服务器负载过高。需平衡性能与资源消耗,不宜设置过大。www.conf中的进程池参数:pm.max_children(最大子进程数,建议为服务器总内存÷单个进程平均内存)、pm.start_servers(启动时的进程数)、pm.min_spare_servers(最小空闲进程数)、pm.max_spare_servers(最大空闲进程数),避免进程频繁创建/销毁的开销。max_execution_time(脚本最大执行时间,如30秒)和post_max_size/upload_max_filesize(POST请求大小和上传文件大小,如10M),防止长时间运行或大文件上传导致的资源耗尽。4. Web服务器集成配置
libapache2-mod-php模块(sudo apt install libapache2-mod-php)并启用,Apache会自动处理PHP文件;若需自定义配置,可在/etc/apache2/sites-available/下的虚拟主机配置中添加AddHandler php-script .php。/etc/nginx/sites-available/default),在location ~ \.php$块中添加:include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;(路径需与PHP-FPM的listen参数一致),并设置fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name确保脚本路径正确。5. 扩展管理注意事项
xdebug仅在开发环境使用),减少服务器资源占用。使用包管理器安装扩展(如sudo apt install php-mysql php-gd)或通过pecl安装(如sudo pecl install redis)。php.ini中注释或删除未使用的扩展行(如;extension=php_bz2.so),防止扩展加载带来的潜在风险。6. 日志与监控配置
log_errors = On并正确设置error_log路径(如/var/log/php_errors.log),定期检查日志以发现潜在问题(如语法错误、数据库连接失败)。slowlog = /var/log/php_slow.log)并设置阈值(如request_slowlog_timeout = 5s),定位执行缓慢的脚本,优化性能。7. 版本与更新维护
sudo apt update && sudo apt upgrade php),避免使用过时版本(如PHP 5.6已停止支持)。cp /etc/php/8.0/fpm/php.ini /etc/php/8.0/fpm/php.ini.bak),便于出现问题时快速恢复。