php.ini,置於 httpd.conf 的 PHPIniDir 指定目錄。指令 = 值,指令名大小寫敏感。E_ALL)、INI 常數(On/Off/None)、位運算表達式(E_ALL & ~E_NOTICE)。foo = 或 foo = none;foo = "none" 則為字串 "none"。extension= 載入行之後才能使用。php_value name value ; 非布林指令,value=none 可清除設定
php_flag name on|off ; 僅限布林指令
注意:httpd.conf 中不可使用 PHP 常數,需換算為對應數值掩碼;標註 SYS 的指令僅能在全域區段使用,標註 INI 的指令禁止在 httpd.conf 使用。
| 類別 | 指令 | 推薦值/說明 |
|---|---|---|
| 錯誤處理 | error_reporting | E_ALL & ~E_DEPRECATED & ~E_STRICT(開發)/ E_ALL & ~E_NOTICE(生產) |
| display_errors | On(開發)/ Off(生產,改用 log_errors) | |
| log_errors | On(生產必開) | |
| error_log | /var/log/php/error.log(絕對路徑,需寫入權限) | |
| 效能 | max_execution_time | 30(秒),CLI 下為 0 無限制 |
| memory_limit | 128M 起步,視專案調整 | |
| realpath_cache_size | 4096k(大型專案建議調大) | |
| 資料處理 | post_max_size | 8M,需大於 upload_max_filesize |
| upload_max_filesize | 2M 預設,依業務調整 | |
| max_input_vars | 1000(防止雜湊碰撞攻擊,大表單需調大) | |
| Session | session.save_handler | files(預設)/ redis / memcached(分散式) |
| session.gc_maxlifetime | 1440(秒),配合 GC 機制 | |
| 擴展 | extension_dir | /usr/lib/php/extensions/no-debug-non-zts-20190902(絕對路徑) |
| extension= | 逐行載入 .so/.dll,順序影響相依關係 |
php.ini,納入版控。disable_functions = exec,passthru,shell_exec,system,proc_open,popen 等高危函數。opcache.enable=1、opcache.jit=1255(PHP 8+ JIT)。php -i | grep -E '^(error_|display_|log_|memory_|max_|post_|upload_)' 快速核對關鍵值。