extension_dir = "C:\Program Files\Apache\bin\php4\extensions"
; Windows: 移除行首分號啟用
extension=php_domxml.dll
extension=php_dbase.dll
; 或動態指定
extension=php_mysql.dll
--enable-xxx=shared 產生 .so。.dll,放入 extension_dir,php.ini 啟用。[Mail]
SMTP = myserver.localnet.com
sendmail_from = me@localhost.com
sendmail_path = /usr/sbin/sendmail
[Java]
java.class.path = .\php_java.jar
java.home = c:\jdk
java.library = c:\jdk\jre\bin\hotspot\jvm.dll
java.library.path = .
[Session]
session.save_path = c:\windows\temp
session.cookie_lifetime = 1800
safe_mode = Off
safe_mode_include_dir = /usr/local/lib/php/safe-include
safe_mode_exec_dir = /usr/local/lib/php/safe-bin
open_basedir = /home/web/
max_execution_time = 90
safe_mode:限制檔案操作僅限同擁有者、禁用高危函式 (PHP 5.4 移除)。open_basedir:限制腳本存取路徑樹,共享主機必備。max_execution_time:防止無限迴圈佔用資源,大檔上傳需調大。file_uploads = On
upload_max_filesize = 2M
register_globals = Off ; 關閉自動全域變數 (安全)
post_max_size = 8M ; 需 > upload_max_filesize
max_input_time = 90 ; PHP 5+ 接收資料最長秒數
memory_limit = 8M ; 單腳本記憶體上限 (需 > post_max_size)
register_argc_argv = false ; 關閉 $argc/$argv (CLI 參數),省記憶體
register_long_arrays = false ; PHP 5 關閉 $HTTP_*_VARS 長陣列,改用 $_GET/$_POST
<?php
// 僅影響當前腳本,結束自動還原
ini_set('max_execution_time', 600); // 10 分鐘
ini_set('memory_limit', '256M');
ini_set('display_errors', '1');
// 查詢當前值
echo ini_get('max_execution_time');
?>
php.ini 的情況。extension_dir, open_basedir 通常僅 PHP_INI_SYSTEM 層級)。ini_get_all() 列出所有指令當前值與修改層級。| 層級常數 | 可修改範圍 | 範例 |
|---|---|---|
| PHP_INI_USER | 腳本 (ini_set)、.user.ini、註冊表 | display_errors, memory_limit |
| PHP_INI_PERDIR | php.ini, .htaccess, .user.ini | open_basedir, upload_max_filesize |
| PHP_INI_SYSTEM | php.ini, httpd.conf | extension_dir, max_execution_time (部分) |
| PHP_INI_ALL | 任意 | error_reporting |
php.ini 是 PHP 行為的總控制台。掌握擴展載入機制、安全限制、資源配額、動態覆寫能力,能在開發、測試、生產各環境精準調校。現代部署建議:最小化啟用擴展、open_basedir 隔離、disable_functions 封鎖高危、opcache 加速、.user.ini 目錄級覆寫、容器化環境透過環境變數注入配置。