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

php.ini 核心配置指令中文詳解與最佳實踐

     編輯:PHP 相關知識

文件結構與語法

  • 配置文件名必須為 php.ini,PHP 啟動時按順序查找:PHPIniDir (Apache) → PHPRC 環境變量 → 編譯時指定路徑 → C:\Windows (Windows) → 當前工作目錄。
  • 行首 ; 為註釋,`[Section]` 為分組標識(僅供可讀性,無功能性)。
  • 指令格式:directive = value,值可為字符串、數字、常量(E_ALL)、布爾值(On/Off/1/0)、表達式(E_ALL & ~E_NOTICE)。
  • 布爾值:On/True/Yes/1 為開啟,Off/False/No/0 為關閉。

核心配置分類詳解

1. 語言引擎與基礎行為

指令默認推薦值說明
engineOnOn啟用 PHP 腳本引擎,關閉則不解析 .php 文件
short_open_tagOnOff禁用 <? ?> 短標籤,防止與 XML 聲明衝突,統一用 <?php
asp_tagsOffOffASP 風格標籤 <% %>,已移除於 PHP 7
precision1414浮點數顯示精度(位數)
y2k_complianceOffOn強制年份四位數輸出,避免 Y2K 問題

2. 輸出緩衝與刷新

指令默認推薦值說明
output_bufferingOff4096開啟輸出緩衝(字節數),允許在輸出後發送 header/setcookie,提升輸出性能
output_handler空ob_gzhandler自動 GZIP 壓縮輸出(需瀏覽器支援),或留空由應用層控制
implicit_flushOffOff每次輸出自動 flush,僅調試時開啟,生產環境嚴重損害性能

3. 安全相關

指令默認推薦值說明
expose_phpOnOff隱藏 HTTP Header 中的 X-Powered-By: PHP/x.y.z,降低信息洩露
allow_call_time_pass_referenceOnOff強制按引用傳參已棄用,PHP 5.4+ 移除,代碼應在函數聲明處用 &$var
safe_modeOffOff安全模式已移除於 PHP 5.4,改用 open_basedir、disable_functions
disable_functions空exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,pcntl_exec禁用高危函數,防止代碼執行漏洞利用
disable_classes空空禁用特定類(罕用)
open_basedir空/var/www/:/tmp/:/usr/share/php/限制腳本可訪問的目錄樹,防止目錄遍歷攻擊

4. 資源限制

指令默認推薦值說明
max_execution_time3030-60腳本最大執行秒數,0 為無限制(CLI 默認 0)
max_input_time6060解析 POST/GET/文件上傳數據的最大秒數
memory_limit128M256M-512M單腳本最大內存,視業務複雜度調整
post_max_size8M20MPOST 數據最大體積,必須 ≥ upload_max_filesize
upload_max_filesize2M20M單文件上傳上限
max_file_uploads2020單次請求最大文件數

5. 錯誤處理與日誌

指令默認推薦值說明
error_reportingE_ALL & ~E_NOTICE & ~E_DEPRECATEDE_ALL開發環境 E_ALL,生產環境 E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errorsOnOff生產環境關閉,防止敏感信息洩露給用戶
display_startup_errorsOffOff啟動階段錯誤不顯示
log_errorsOffOn啟用錯誤日誌寫入
error_log空/var/log/php/error.log錯誤日誌絕對路徑,需 PHP 進程可寫
error_log_max_len10244096單條日誌最大長度,0 為不限制
ignore_repeated_errorsOffOn忽略重複錯誤,減少日誌噪音

6. 會話

指令默認推薦值說明
session.save_handlerfilesredis分布式部署需用 Redis/Memcached,單機可用 files
session.save_path/tmp/var/lib/php/sessions文件存儲路徑,或 tcp://127.0.0.1:6379
session.gc_maxlifetime14407200會話垃圾回收最大生存秒數(2小時)
session.cookie_httponlyOffOn防止 JS 讀取 Session ID,緩解 XSS
session.cookie_secureOffOn (HTTPS)僅 HTTPS 傳輸 Cookie
session.use_strict_modeOffOn嚴格模式拒絕未初始化的 Session ID

7. 擴展模塊加載

; 動態擴展
extension=pdo_mysql
extension=redis
extension=opcache
extension=gd
extension=intl

; Zend 擴展
zend_extension=opcache

8. OPcache 生產環境必開

指令推薦值說明
opcache.enable1啟用字節碼緩存
opcache.memory_consumption256共享內存大小
opcache.interned_strings_buffer16駐留字符串緩存
opcache.max_accelerated_files20000最大緩存文件數
opcache.revalidate_freq60檢查文件更新間隔(秒),0 為每次檢查
opcache.fast_shutdown1快速關閉序列化

環境差異化配置策略

  • 使用 .user.ini(FPM/CLI 支援)覆蓋目錄級配置。
  • Docker 環境通過環境變量 + 入口腳本動態生成 php.ini。
  • 生產/開發分離:php.ini-production、php.ini-development 兩份模板,部署時複製對應版本。

總結

php.ini 影響 PHP 運行的方方面面。生產環境核心原則:關閉顯示錯誤、開啟日誌、隱藏版本、禁用高危函數、限制目錄、啟用 OPcache、調大內存與上傳限制、嚴格會話配置。定期審查配置,隨 PHP 版本更新調整棄用指令。

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