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),持續優化。