; 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');
; 基礎值
memory_limit = 128M
; 大量資料處理區塊
ini_set('memory_limit', '256M');
// 處理完畢立即恢復
ini_set('memory_limit', '128M');
; 全域嚴格禁用
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
; 生產環境
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
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 分鐘
file_uploads = On
upload_max_filesize = 20M
post_max_size = 25M
max_file_uploads = 20
max_input_vars = 3000 ; 防止大量陣列攻擊
max_input_time = 60 ; 上傳大檔案需放寬
display_errors = Offdisable_functions 包含所有 Shell 執行函數memory_limit 符合框架需求 (Laravel 建議 ≥ 128M)opcache.enable = 1 並調整 memory_consumptionsession.save_path 指向 /dev/shm 或 Redisdate.timezone = Asia/Taipei (避免日期函數警告)expose_php = Off (隱藏 PHP 版本)cgi.fix_pathinfo = 0 (Nginx 安全)php-fpm reload 生效php.ini 不是「設定好就不動」的檔案。**隨專案演進、流量增長、PHP 版本升級,每季審視一次**,對照清單微調,才能維持最佳效能與安全態勢。