ServBay PHP 配置指南:調整 php.ini、PHP-FPM 及擴充模組
ServBay 為網頁開發者提供了一套強大且彈性的本機 PHP 開發環境。為了配合不同專案的需求,你可能會需要調整 PHP 的各種設定,例如記憶體用量上限、檔案上傳大小、錯誤回報等級,或啟用特定擴充模組。
本文將詳細說明如何在 ServBay 中修改 PHP 設定。ServBay 建議並提供了圖形化使用者介面 (UI) 來進行這些調整。雖然了解底層設定檔(如 php.ini
與 php-fpm.conf
)的位置與結構也很有幫助,但強烈建議透過 ServBay 的 UI 來進行調整,以維持設定的持久性與相容性。
重要提示
請勿手動編輯 ServBay 產生的 PHP 設定檔(路徑通常在 /Applications/ServBay/etc/php/<version>/
及其子目錄下)。這些檔案由 ServBay 自動管理,任何手動變更都可能在 ServBay 更新、重啟或其他操作後被覆蓋。請務必經由 ServBay 的 UI 進行所有設定調整。
概述
在 ServBay 中,各版本 PHP 的設定檔會存放於自己的目錄,例如 PHP 8.3 的主要設定檔在 /Applications/ServBay/etc/php/8.3
內。
主要設定檔包括:
php.ini
:PHP 的核心設定檔,影響 CLI 與網頁環境下的全域參數。php-fpm.conf
:負責 PHP-FPM(FastCGI Process Manager)設定,主要左右 PHP 在網頁伺服器(如 Caddy 或 Nginx)下的運作方式與效能。conf.d/
:此資料夾存放各個 PHP 擴充模組的設定檔(.ini
檔),如xdebug.ini
、opcache.ini
等。
雖然這些檔案都存在,ServBay 提供了更安全、直覺化的方式來變更它們的內容。
透過 ServBay 使用者介面進行設定(推薦)
ServBay 以直覺易懂的操作介面,讓你直接調整 PHP 的各類設定。經由 UI 儲存後,ServBay 會自動套用變更,必要時(通常是自動)重啟 PHP 服務,無需手動編輯檔案或下命令。
進入 PHP 設定頁的步驟如下:
- 開啟 ServBay 主視窗。
- 左側導覽欄點選 語言。
- 在開發語言列表中找到並選擇欲設定的 PHP 版本(如
PHP 8.3
)。 - 右側面板會顯示該 PHP 版本的詳細設定資訊與選項。
一個典型的 PHP 設定介面如下圖所示:
介面通常分為三大部分,對應 PHP-FPM、PHP(php.ini
)及 PHP 擴充模組設定。以下將一一介紹。
PHP FPM 設定
提示
php-fpm.conf
的設定主要影響 PHP 在網頁伺服器下的運作。透過 ServBay UI 此區域設定的參數會優先且覆蓋 php.ini
中的同名項目,但僅適用於 Web 請求。這些設定不會影響 PHP 的命令列(CLI)行為。
ServBay 的網頁伺服器(Caddy 或 Nginx)會透過 PHP-FPM 呼叫 PHP。FPM 設定介面允許調整各種影響網站效能和穩定度的參數,例如:
- 程序管理 (
pm
):控制 PHP-FPM 如何產生和管理工作程序(如dynamic
,static
)。 - 程序數量 (
pm.max_children
,pm.start_servers
, 等):設定最大處理程序數、啟動時預先建立的程序數等,影響並行處理能力。 - 記憶體上限 (
memory_limit
):此處的設定會覆蓋php.ini
裡的同名參數,僅作用於 Web 環境。 - 錯誤日誌顯示:可調整錯誤 log 路徑、等級與是否於瀏覽器顯示錯誤。
例如,若想將 PHP 在 Web 環境下的記憶體限制由預設值(如 64M 或 128M)調高至 1G,只需於 ServBay UI 的 FPM 區塊找到 memory_limit
,選擇 1G
,儲存變更即可。此舉僅影響由網頁伺服器執行的 PHP,命令列執行的程式則依照 php.ini
的 memory_limit
。
舉例比較: 若 php.ini
裡 memory_limit
為 512M
,FPM 設定區則設為 128M
:
- 在 CLI 下執行 PHP,記憶體限制為
512M
。 - 由 Web 存取 PHP,限制為
128M
。
php.ini 設定
提示
php.ini
的設定屬於全域,會影響 PHP 在 CLI 及 Web 環境的行為。但如前所述,PHP FPM 中的同名設定會覆蓋 php.ini
在 Web 下的值。
PHP 設定區對應的就是 php.ini
內的主要項目,涵蓋各種執行期的核心參數,例如:
post_max_size
:限制 POST 方法提交資料的最大容量。upload_max_filesize
:單一檔案上傳最大值。date.timezone
:指定 PHP 運作時的預設時區。display_errors
/error_reporting
:控制是否顯示錯誤訊息以及顯示哪些等級。max_execution_time
:程式最大容許執行秒數。disable_functions
/disable_classes
:停用特定函式或類別,以增進安全性。open_basedir
:限制 PHP 可存取的目錄範圍。建議將所有網站專案皆放於 ServBay 預設網站根目錄/Applications/ServBay/www
,如此設定open_basedir
時僅需指定此一資料夾,無須羅列多條路徑。
你可直接在 ServBay UI 調整這些常用的 php.ini
項目。
php.ini
的所有設定項說明請參考 PHP 官方文件:PHP Runtime Configuration。
PHP 擴充模組設定
ServBay 預先構建了多數常用 PHP 擴充模組,支援資料庫連線、快取、除錯、主流框架、其他應用等。ServBay UI 可讓你輕鬆啟用或關閉這些模組,並針對其專屬參數做調整。
ServBay 支援的知名 PHP 擴充模組包含但不限於 xDebug
、OPcache
、ImageMagick
、Redis
、MongoDB
、Phalcon
、Swoole
等,也有多種資料庫(MySQL, PostgreSQL, MongoDB)、訊息佇列、快取系統等支援。
開關和設定 PHP 擴充模組非常容易:
- 於 ServBay UI 的 PHP 設定頁面切至「擴充模組」等相關分頁。
- 找到欲操作的模組(如
xdebug
)。 - 點擊開關來啟用或停用。
- 若該模組可進行額外調整者(如
xDebug
),可直接於 UI 修改(如xdebug.mode
、xdebug.client_port
等)。 - 儲存變更以套用。
關於所有 ServBay 支援的 PHP 擴充模組介紹,請參考官方文件:PHP 擴充模組列表(建議參閱最新版)。
理解 PHP 設定檔結構(不建議手動更改)
即使強烈建議使用 ServBay UI 管理設定,理解底層檔案的結構對掌握 PHP 運作原理仍然有益。
ServBay 所產生的 PHP 設定檔存放於 /Applications/ServBay/etc/php/<version>/
。
php.ini
:主設定檔php-fpm.conf
:PHP-FPM 流程管理器設定檔conf.d/
:各擴充模組的.ini
檔案
php.ini 檔案結構範例
php.ini
採用 INI 格式。以下展示部分常見設定:
; 修改記憶體限制
memory_limit = 256M
; 修改上傳檔案大小限制
upload_max_filesize = 50M
post_max_size = 50M
; 修改時區設定
date.timezone = "Asia/Shanghai" ; 或者 "UTC", "America/New_York" 等,請依需求更改
; 顯示錯誤訊息(僅建議開發環境)
display_errors = On
error_reporting = E_ALL
; 執行時間限制
max_execution_time = 300
; 限定檔案系統可存取路徑範例
; open_basedir = /Applications/ServBay/www/:/tmp/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
php-fpm.conf 檔案結構範例
php-fpm.conf
包含全域設定與程序池(pool)設定。ServBay 預設通常設一個叫 www
的 pool。
[global]
; 全域錯誤日誌
error_log = /Applications/ServBay/logs/php/8.3/errors.log
[www]
; 監聽地址與 socket
listen = /Applications/ServBay/tmp/php-cgi-8.3.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
; 執行者與群組(ServBay 通常以現用者執行)
; user = servbay-demo
; group = staff
; 程序管理模式(static, dynamic, ondemand)
pm = dynamic
pm.max_children = 10 ; 最多子程序數
pm.start_servers = 2 ; 開始時建立幾個程序
pm.min_spare_servers = 1 ; 最少空閒程序數
pm.max_spare_servers = 6 ; 最多空閒程序數
pm.max_requests = 1024 ; 每個子程序處理上限,達標後重啟避免記憶體洩漏
; 啟用慢日誌(執行超過 request_slowlog_timeout 會寫入 slowlog)
request_slowlog_timeout = 5s
slowlog = /Applications/ServBay/logs/php/8.3/slow.log
; PHP 設定(覆蓋 php.ini 同名項目範例)
; php_admin_value[memory_limit] = 128M
; php_admin_flag[display_errors] = on
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
PHP 擴充模組載入設定範例 (conf.d/)
conf.d/
資料夾下的 .ini
用於載入與設定專屬擴充模組。例如 xdebug.ini
可能長這樣:
[Xdebug]
; 載入 Xdebug 擴充模組
zend_extension = xdebug.so
; Xdebug 模式(debug, develop, profile, trace, coverage)
xdebug.mode=debug,develop
; 啟動除錯模式(yes, trigger, develop)
; yes: 永遠啟動
; trigger: 觸發器控制(如 GET/POST 參數或 cookie)
; develop: 只開發用功能(如呼叫堆疊)
xdebug.start_with_request=yes
; 除錯用主機及 port,連結 IDE
xdebug.client_host=localhost
xdebug.client_port=39083
; Xdebug 日誌路徑
xdebug.log=/Applications/ServBay/logs/xdebug/8.3/xdebug.log
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
再再次強調:雖然你可以於這些路徑找到設定檔,但請勿手動操作,務必透過 ServBay UI 進行調整。
套用設定變更:重啟 PHP 服務
利用 ServBay UI 變更設定後,ServBay 一般會自動檢測並套用。有時,為確保設定全部生效,需手動重啟 PHP 服務。
重啟方式如下:
透過 ServBay UI 重啟
- 開啟 ServBay 主視窗。
- 左側點選 套件。
- 找出已調整設定的 PHP 版本。
- 點擊該版本旁的重啟鈕(通常為一個迴圈箭頭圖示)。
透過 servbayctl
指令列工具重啟
對於習慣命令列的開發者,可用 ServBay 附帶的 servbayctl
工具來管理服務(如重啟 PHP 特定版本)。
打開終端機,輸入下列指令(將 8.3
換成你的 PHP 版本):
servbayctl restart php 8.3
執行後,ServBay 即會重啟對應版本的 PHP-FPM,使新設定生效。
常見問題集 (FAQ)
Q: 我手動編輯了
php.ini
,為什麼設定沒生效或被還原?- A: ServBay 會自動管理並產生所有軟體包的設定檔。手動操作容易在 ServBay 更新、重啟或其他內部流程時被覆蓋。請僅以 UI 調整 PHP 設定,這才是推薦且持久的方式。
Q: 如何提升 PHP 記憶體限制或上傳檔案大小?
- A: 進入 ServBay UI,點 語言 -> 選擇 PHP 版本。在 PHP FPM 設定中調整
memory_limit
(影響 Web),在 php.ini 設定區調整upload_max_filesize
與post_max_size
(影響全域;Web 環境值可能被 FPM 覆蓋)。儲存後並需重啟 PHP 服務。
- A: 進入 ServBay UI,點 語言 -> 選擇 PHP 版本。在 PHP FPM 設定中調整
Q: 如何啟用與設定 Xdebug?
- A: 進入 ServBay UI,導航至 語言 -> 選擇 PHP 版本。在擴充模組頁尋找
xdebug
並啟用,視需求調整xdebug.mode
,xdebug.client_host
,xdebug.client_port
等參數,最後儲存並重啟 PHP 服務。
- A: 進入 ServBay UI,導航至 語言 -> 選擇 PHP 版本。在擴充模組頁尋找
Q:
php.ini
與 PHP-FPM 設定有何不同?要調整哪個?- A:
php.ini
為 PHP 全域設定,影響 CLI 及 Web 環境。PHP-FPM 設定(php-fpm.conf
)專屬於 PHP 作為 Web 服務器時的運作,且同名參數會覆蓋php.ini
。通常調整影響 Web 環境(如記憶體、限制等)先查 PHP-FPM,若要調 CLI 或全域參數(如時區、禁用函式)則至 php.ini。ServBay UI 已清楚區分這些設定區塊。
- A:
總結
ServBay 透過簡便的 UI,讓你安全且彈性地管理 PHP 設定,含括 php.ini
、PHP-FPM 及各類擴充模組。經 UI 調整、儲存與重啟 PHP 服務,即可保證開發環境完全依你的需求運作。雖然理解底層檔案結構有助於學習,但實際調整請一定以 ServBay UI 進行,以預防手動變更被覆蓋的問題。善用 ServBay 強大的設定能力,輕鬆為不同專案打造最佳的 PHP 執行環境。