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

PHP 配置 php.ini 六大技巧:效能與安全並重

     編輯:PHP 相關知識

本文為 151849 進階補充,著重「技巧」視角與生產檢核清單

技巧 1:執行時間分級控制

; Web 請求
max_execution_time = 30

; CLI 腳本 (cron、隊列 worker) 獨立設定
; php.ini 不區分 SAPI,請在腳本開頭動態設定
// long_running_task.php
set_time_limit(0); // 或 3600
ini_set('memory_limit', '512M');

技巧 2:記憶體限制動態調整

; 基礎值
memory_limit = 128M

; 大量資料處理區塊
ini_set('memory_limit', '256M');
// 處理完畢立即恢復
ini_set('memory_limit', '128M');

技巧 3:函數禁用白名單機制

; 全域嚴格禁用
disable_functions = exec,system,passthru,shell_exec,proc_open,popen,pcntl_exec,...

; 部署腳本 deploy.php 臨時解禁
// 方式 1: CLI 參數
php -d disable_functions= deploy.php

// 方式 2: 獨立 php.ini
php -c /etc/php/deploy.ini deploy.php

技巧 4:錯誤報告分級

; 生產環境
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php-fpm/error.log
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

; 開發環境
display_errors = On
error_reporting = E_ALL

技巧 5:Session 安全與效能

session.save_handler = files
session.save_path = "/dev/shm/php_sessions"
session.use_strict_mode = 1
session.cookie_httponly = 1
session.cookie_secure = 1        ; 僅 HTTPS
session.cookie_samesite = "Lax"  ; CSRF 防護
session.gc_probability = 1
session.gc_divisor = 1000        ; 0.1% 機率觸發 GC
session.gc_maxlifetime = 1440    ; 24 分鐘

技巧 6:上傳與 POST 邊界同步

file_uploads = On
upload_max_filesize = 20M
post_max_size = 25M
max_file_uploads = 20
max_input_vars = 3000          ; 防止大量陣列攻擊
max_input_time = 60            ; 上傳大檔案需放寬

生產部署檢核清單 (Checklist)

  • [ ] display_errors = Off
  • [ ] disable_functions 包含所有 Shell 執行函數
  • [ ] memory_limit 符合框架需求 (Laravel 建議 ≥ 128M)
  • [ ] opcache.enable = 1 並調整 memory_consumption
  • [ ] session.save_path 指向 /dev/shm 或 Redis
  • [ ] date.timezone = Asia/Taipei (避免日期函數警告)
  • [ ] expose_php = Off (隱藏 PHP 版本)
  • [ ] cgi.fix_pathinfo = 0 (Nginx 安全)
  • [ ] 所有設定已 php-fpm reload 生效

結語

php.ini 不是「設定好就不動」的檔案。**隨專案演進、流量增長、PHP 版本升級,每季審視一次**,對照清單微調,才能維持最佳效能與安全態勢。

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