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),持续优化。