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

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

     編輯:PHP 相關知識

前言

php.ini 是 PHP 引擎啟動時讀取的主設定檔,控制記憶體、上傳、錯誤處理、擴充模組載入等核心行為。本文針對常見生產環境調整項目,提供中文說明與建議值。

尋找與生效順序

  1. 當前工作目錄下的 php.ini
  2. 環境變數 PHPRC 指定路徑
  3. 編譯時指定的預設路徑(Windows 為系統目錄,Linux 為 /etc/php/版本/cli|fpm/php.ini)

CLI 模式可用 php -c /path/to/php.ini 指定;修改後必須重啟 PHP-FPM 或 Apache 才生效。

核心區塊精選解析

1. 語言引擎與基本行為

指令建議值說明
engineOn啟用 PHP 引擎,關閉則不解析 PHP 程式碼
short_open_tagOff關閉 <? ... ?> 短標籤,避免與 XML 衝突,提升可移植性
precision14浮點數顯示精度
output_buffering4096開啟輸出緩衝,允許在輸出內容後再送 header,建議給定具體大小而非 On
expose_phpOff隱藏 HTTP Header 中的 X-Powered-By: PHP/...,降低資訊洩露風險

2. 資源限制

指令建議值說明
max_execution_time30腳本最大執行秒數,CLI 為 0(無限制)
memory_limit256M單腳本記憶體上限,視專案複雜度調整
post_max_size64MPOST 資料總大小上限,需大於 upload_max_filesize
upload_max_filesize20M單檔上傳上限

3. 錯誤處理與日誌(生產環境關鍵)

指令建議值說明
error_reportingE_ALL & ~E_DEPRECATED & ~E_STRICT回報所有錯誤但排除棄用與嚴格標準提示
display_errorsOff生產環境嚴禁直接輸出錯誤到瀏覽器,防洩漏路徑、SQL 等敏感資訊
log_errorsOn啟用錯誤日誌寫入檔案或 syslog
error_log/var/log/php/error.log指定專屬錯誤日誌路徑,確保目錄可寫
ignore_repeated_errorsOn避免重複錯誤刷滿日誌

4. Session 設定

指令建議值說明
session.save_handlerfiles / redis單機用 files,叢集建議改 redis/memcached
session.save_path"2;/var/lib/php/sessions"啟用子目錄分散儲存,提升大量 session 效能
session.gc_maxlifetime1440垃圾回收存活秒數(24 分鐘)
session.cookie_httponly1禁止 JavaScript 讀取 session cookie,防 XSS
session.use_strict_mode1拒絕未初始化的 session ID,防固定攻擊

5. 安全相關

  • disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source —— 封鎖高風險函式
  • disable_classes = —— 視需求禁用敏感類別
  • open_basedir = /var/www/:/tmp/ —— 限制檔案操作目錄,防目錄遍歷
  • allow_url_fopen = Off / allow_url_include = Off —— 禁止遠端檔案包含

6. 擴充模組載入

僅啟用專案真正需要的模組,減少記憶體佔用與攻擊面:

extension=pdo_mysql
extension=redis
extension=opcache
extension=mbstring
extension=json
; extension=gd ; 視需求開啟

OPcache 生產環境調優

[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60   ; 生產環境 60 秒檢查一次,開發環境設 0
opcache.fast_shutdown=1

常見陷阱提醒

  • 修改後未重啟服務:systemctl reload php-fpm 或 apachectl graceful
  • 多版本共存:CLI 與 FPM 可能讀取不同 ini,用 php --ini 確認
  • .user.ini 覆蓋:Nginx + PHP-FPM 架構下,目錄下的 .user.ini 會覆蓋主設定,需留意

結語

php.ini 調優是效能與安全的基石。建議維護一份「專案專用 php.ini 模板」,部署時以配置管理工具(Ansible、Dockerfile)分發,確保環境一致性。

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