CentOS系統中,PHP的主配置文件通常位于/etc/php.ini(PHP 7.x/8.x版本),部分配置也可能分散在/etc/php.d/目錄下的擴展模塊配置文件中(如opcache.ini)。修改配置后需重啟PHP服務(如php-fpm或Apache/Nginx)使更改生效。
用于控制PHP錯誤的顯示、記錄及日志路徑,是調試和運維的關鍵配置:
error_reporting:設置錯誤報告級別,生產環境建議使用E_ALL & ~E_NOTICE & ~E_STRICT(僅顯示致命錯誤和警告),開發環境可使用E_ALL(顯示所有錯誤)。display_errors:是否在瀏覽器中顯示錯誤信息,生產環境必須設置為Off(避免敏感信息泄露),開發環境可設為On。log_errors:是否將錯誤記錄到日志文件,建議設為On(便于后續排查問題)。error_log:指定錯誤日志文件的路徑,例如/var/log/php_errors.log(需確保PHP進程對該目錄有寫入權限)。cgi.fix_pathinfo:修復CGI腳本路徑信息,建議設為0(防止惡意路徑遍歷攻擊)。用于控制PHP腳本的資源使用,避免單個腳本占用過多服務器資源:
memory_limit:腳本可使用的最大內存量,例如128M(根據應用需求調整,如WordPress等CMS建議設置為256M以上)。max_execution_time:腳本最大執行時間(單位:秒),例如30(生產環境可根據業務調整,如上傳大文件的腳本可設置為300)。post_max_size:POST請求允許的最大數據量(單位:字節),需大于等于upload_max_filesize,例如8M。upload_max_filesize:單個上傳文件的最大大?。▎挝唬鹤止潱?,例如2M(如需上傳大文件,可調整為64M或更高)。max_input_vars:每個請求可接收的最大輸入變量數量(如表單字段),例如1000(避免變量過多導致內存溢出)。用于控制會話(Session)的存儲方式和路徑:
session.save_handler:會話存儲方式,默認為files(文件存儲),也可設置為redis或memcached(分布式環境推薦)。session.save_path:會話文件存儲路徑,例如/tmp(需確保目錄可寫,權限設為733)。session.cookie_lifetime:會話Cookie的生存時間(單位:秒),0表示瀏覽器關閉時失效,如需長期會話可設置為86400(1天)。用于提升PHP應用的安全性,防止惡意攻擊:
expose_php:是否暴露PHP版本信息,建議設為Off(隱藏版本號,減少針對性攻擊)。disable_functions:禁用危險函數(如執行系統命令的函數),生產環境建議禁用exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec等(避免被黑客利用執行惡意命令)。open_basedir:限制PHP腳本可訪問的目錄(如/var/www/html/:/tmp/),防止腳本越權訪問系統文件(需根據應用目錄調整)。allow_url_fopen:是否允許通過URL打開遠程文件(如file_get_contents('http://example.com')),建議設為Off(避免遠程文件包含漏洞)。用于提升PHP腳本的執行效率,減少資源消耗:
opcache.enable:是否啟用OPcache(PHP字節碼緩存),建議設為1(顯著提升腳本執行速度,減少CPU占用)。opcache.memory_consumption:OPcache使用的內存大?。▎挝唬篗B),例如128(根據服務器內存調整,如16GB內存可設置為256)。opcache.max_accelerated_files:OPcache可緩存的腳本文件數量,例如4000(需大于應用中的腳本文件總數)。opcache.revalidate_freq:OPcache檢查腳本更新的時間間隔(單位:秒),例如60(每60秒檢查一次,平衡性能與代碼更新及時性)。realpath_cache_size:真實路徑緩存大?。▎挝唬鹤止潱?,例如4096K(提升文件路徑解析速度,減少IO操作)。用于配置PHP與數據庫的連接參數(如MySQL):
mysqli.default_host:默認MySQL主機地址,例如localhost(本地數據庫)。mysqli.default_user:默認MySQL用戶名,例如root(數據庫管理員賬號)。mysqli.default_pw:默認MySQL密碼,例如your_password(需確保密碼安全,避免明文存儲)。pdo_mysql.default_socket:默認MySQL套接字文件路徑,例如/var/lib/mysql/mysql.sock(根據MySQL安裝路徑調整)。若通過PHP-FPM(FastCGI進程管理器)運行PHP,還需配置以下參數(位于/etc/php-fpm.d/www.conf):
listen:PHP-FPM監聽地址,可選擇127.0.0.1:9000(TCP端口)或/var/run/php-fpm/php-fpm.sock(Unix套接字,性能更好)。user/group:PHP-FPM運行的用戶和組,需與Web服務器(如Nginx的nginx用戶、Apache的apache用戶)一致,例如user = nginx、group = nginx。pm:進程管理器類型,推薦dynamic(動態調整進程數)。pm.max_children:最大子進程數,根據服務器內存調整(如1GB內存可設置為20,公式:內存大小 / 單個進程內存限制)。pm.start_servers:啟動時的子進程數,建議設置為pm.max_children的1/4(如5)。pm.min_spare_servers:最小空閑進程數,避免請求到來時頻繁創建進程(如5)。pm.max_spare_servers:最大空閑進程數,避免進程閑置浪費資源(如10)。pm.max_requests:每個子進程處理的最大請求數,達到后重啟(避免內存泄漏,如500)。