PHP在Linux上的最佳配置指南
在Linux环境下配置PHP,需围绕性能、安全、稳定性三大核心目标,从环境搭建、组件优化、参数调优到监控维护形成闭环。以下是具体最佳实践:
.htaccess配置的场景。sudo apt update && sudo apt install php php-cli php-fpm php-mysql php-gd php-mbstring php-xml php-zip;sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip。/etc/nginx/sites-available/default),添加以下内容:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # 或127.0.0.1:9000(TCP模式)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
gzip on; gzip_types text/plain text/css application/json application/javascript;;worker_processes auto;,自动匹配CPU核心数)。mod_proxy_fcgi模块(处理PHP-FPM请求):sudo a2enmod proxy_fcgi setenvif;/etc/apache2/sites-available/000-default.conf),添加:<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost"
</FilesMatch>
KeepAlive On; MaxKeepAliveRequests 100; KeepAliveTimeout 5。PHP-FPM是PHP的进程管理器,需调整以下关键参数(位于/etc/php-fpm.d/www.conf):
pm.max_children:最大子进程数(根据服务器内存计算,公式:可用内存(MB)/单个PHP进程内存(MB),如2GB内存、每个进程100MB,则设置为20-30);pm.start_servers:启动时的子进程数(建议为pm.max_children的1/4-1/2);pm.min_spare_servers/pm.max_spare_servers:空闲进程的最小/最大数量(避免频繁创建/销毁进程);pm.max_requests:单个进程处理的最大请求数(如500,防止内存泄漏积累)。编辑/etc/php.ini,调整以下关键参数:
memory_limit:单个PHP脚本的内存限制(如256M,根据应用需求调整,避免过大导致内存耗尽);max_execution_time:脚本最大执行时间(如300秒,适合上传或复杂计算的场景);upload_max_filesize/post_max_size:文件上传大小限制(如50M,需大于等于upload_max_filesize)。opcache.enable=1; opcache.enable_cli=1;opcache.memory_consumption=128(根据服务器内存调整,如1GB内存可设为128-256);opcache.max_accelerated_files=4000(设置为项目PHP文件总数的1.5-2倍);opcache.revalidate_freq=60(每60秒检查文件修改时间,避免频繁重新编译)。/etc/php.ini,设置expose_php = Off;display_errors = Off(生产环境),开启日志记录:log_errors = On; error_log = /var/log/php_errors.log。/etc/php.ini,设置disable_functions = exec,system,passthru,shell_exec,proc_open,curl_exec,curl_multi_exec(根据需求调整,避免命令注入)。open_basedir限制PHP脚本访问路径(如open_basedir = /var/www/html:/tmp,防止恶意脚本访问系统文件)。PDO::ATTR_PERSISTENT => true),减少数据库连接开销;SELECT *,使用LIMIT)。/var/log/php_errors.log)、Web服务器日志(如Nginx的/var/log/nginx/error.log),定位性能瓶颈或错误。/var/log/下的旧日志)、临时文件(/tmp),释放磁盘空间。通过以上配置,可在Linux环境下构建一个高性能、安全、稳定的PHP运行环境。需根据实际项目需求(如流量规模、功能模块)调整参数,定期进行性能测试(如使用Apache Benchmark、Blackfire),持续优化。