首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

php.ini-recommended 與 php.ini-dist 區別詳解及常用生產環境配置建議

     編輯:PHP 綜合知識

PHP 源碼包提供兩份模板配置文件:**php.ini-recommended** (推薦/生產) 和 **php.ini-dist** (默認/開發)。理解差異,能快速生成適合環境的配置。本文對比關鍵指令,並給出生產環境建議值。

兩份文件核心定位

文件用途特點
php.ini-recommended生產環境推薦安全優先、錯誤不顯示、性能優化
php.ini-dist默認/開發環境錯誤顯示、寬鬆設置、便於調試

關鍵指令差異對比表

指令php.ini-recommendedphp.ini-dist說明
register_globalsOffOn極度不安全,PHP 5.4+ 已移除,必須 Off
display_errorsOffOn生產環境禁止直接輸出錯誤,記錄日誌
log_errorsOnOff生產環境必須開啟錯誤日誌
error_reportingE_ALL & ~E_NOTICEE_ALL & ~E_NOTICE建議生產: E_ALL & ~E_DEPRECATED & ~E_STRICT
short_open_tagOffOn建議 Off,使用完整
output_buffering4096Off開啟緩衝減少網絡交互,提升性能
allow_call_time_pass_referenceOffOnPHP 5.4+ 已移除,必須 Off
variables_order"GPCS""EGPCS"生產環境不註冊 ENV 變量,節省內存
register_long_arraysOffOnPHP 5.4+ 已移除 ($HTTP_*_VARS),必須 Off
register_argc_argvOffOnCLI 環境需 On,Web 環境建議 Off 節省內存
magic_quotes_gpcOffOn極度不安全,PHP 5.4+ 已移除,必須 Off
extension_dir"./""./"必須設置絕對路徑,如 /usr/local/php/lib/php/extensions/...
date.timezone(空)(空)必須設置,如 Asia/Shanghai,否則警告
session.gc_probability11配合 gc_divisor 控制 GC 概率
session.gc_divisor1000100生產環境建議 1000 (0.1% 概率),減少 GC 開銷
session.cookie_httponly10防 XSS 必開,JS 無法讀取 Session Cookie
session.cookie_secure00HTTPS 站點必須設 1
expose_phpOffOn隱藏 PHP 版本信息 (Header: X-Powered-By)

生產環境 php.ini 核心配置模板


; === 安全核心 ===
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 = On
  • error_reporting = E_ALL
  • opcache.revalidate_freq = 0 (每次請求檢查更新)
  • xdebug.mode = develop,debug (安裝 Xdebug)

配置文件加載優先級

  1. PHPIniDir (Apache) / php-fpm.conf 中的 php_ini_path
  2. 環境變量 PHP_INI_SCAN_DIR (掃描 .ini 文件目錄)
  3. 編譯時 --with-config-file-path 指定目錄下的 php.ini
  4. 默認路徑 (/usr/local/lib/php.ini 等)

驗證當前生效配置: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 部署生產環境。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved