PHP 源碼包提供兩份模板配置文件:**php.ini-recommended** (推薦/生產) 和 **php.ini-dist** (默認/開發)。理解差異,能快速生成適合環境的配置。本文對比關鍵指令,並給出生產環境建議值。
| 文件 | 用途 | 特點 |
|---|---|---|
| php.ini-recommended | 生產環境推薦 | 安全優先、錯誤不顯示、性能優化 |
| php.ini-dist | 默認/開發環境 | 錯誤顯示、寬鬆設置、便於調試 |
| 指令 | php.ini-recommended | php.ini-dist | 說明 |
|---|---|---|---|
| register_globals | Off | On | 極度不安全,PHP 5.4+ 已移除,必須 Off |
| display_errors | Off | On | 生產環境禁止直接輸出錯誤,記錄日誌 |
| log_errors | On | Off | 生產環境必須開啟錯誤日誌 |
| error_reporting | E_ALL & ~E_NOTICE | E_ALL & ~E_NOTICE | 建議生產: E_ALL & ~E_DEPRECATED & ~E_STRICT |
| short_open_tag | Off | On | 建議 Off,使用完整 |
| output_buffering | 4096 | Off | 開啟緩衝減少網絡交互,提升性能 |
| allow_call_time_pass_reference | Off | On | PHP 5.4+ 已移除,必須 Off |
| variables_order | "GPCS" | "EGPCS" | 生產環境不註冊 ENV 變量,節省內存 |
| register_long_arrays | Off | On | PHP 5.4+ 已移除 ($HTTP_*_VARS),必須 Off |
| register_argc_argv | Off | On | CLI 環境需 On,Web 環境建議 Off 節省內存 |
| magic_quotes_gpc | Off | On | 極度不安全,PHP 5.4+ 已移除,必須 Off |
| extension_dir | "./" | "./" | 必須設置絕對路徑,如 /usr/local/php/lib/php/extensions/... |
| date.timezone | (空) | (空) | 必須設置,如 Asia/Shanghai,否則警告 |
| session.gc_probability | 1 | 1 | 配合 gc_divisor 控制 GC 概率 |
| session.gc_divisor | 1000 | 100 | 生產環境建議 1000 (0.1% 概率),減少 GC 開銷 |
| session.cookie_httponly | 1 | 0 | 防 XSS 必開,JS 無法讀取 Session Cookie |
| session.cookie_secure | 0 | 0 | HTTPS 站點必須設 1 |
| expose_php | Off | On | 隱藏 PHP 版本信息 (Header: X-Powered-By) |
; === 安全核心 ===
expose_php = Off
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/error.log
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
register_globals = Off
magic_quotes_gpc = Off
allow_url_fopen = Off
allow_url_include = Off
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,pcntl_exec
disable_classes =
; === 性能優化 ===
output_buffering = 4096
implicit_flush = Off
zlib.output_compression = On
zlib.output_compression_level = 6
realpath_cache_size = 256k
realpath_cache_ttl = 300
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
; === 會話安全 ===
session.cookie_httponly = 1
session.cookie_secure = 0 ; HTTPS 環境改 1
session.use_strict_mode = 1
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.save_handler = files
session.save_path = "/var/lib/php/session"
; === 基礎設置 ===
date.timezone = Asia/Shanghai
short_open_tag = Off
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731"
variables_order = "GPCS"
register_argc_argv = Off
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 10M
max_file_uploads = 20
default_charset = "UTF-8"
display_errors = Onerror_reporting = E_ALLopcache.revalidate_freq = 0 (每次請求檢查更新)xdebug.mode = develop,debug (安裝 Xdebug)驗證當前生效配置:php --ini 或 phpinfo() 頁面查看 Loaded Configuration File。
php.ini-recommended 是生產環境基準,**關鍵在於關閉危險特性 (register_globals, magic_quotes)、隱藏錯誤顯示、開啟日誌、設置時區、會話安全、啟用 OPcache**。實際部署時,在其基礎上根據業務調整 memory_limit、upload_max_filesize、disable_functions、opcache 參數。**絕不直接使用 php.ini-dist 部署生產環境。**