由於 event 擴充強烈依賴 sockets 模組,必須確保系統先載入 sockets,才能載入 event(https://www.rootop.org/pages/5494.html)。以下是專為 Debian 13.7 與 PHP 8.5 梳理的完整安裝與啟用指南:
------------------------------
## 1. 安裝編譯所需的系統依賴
PECL 編譯 event 擴充需要 libevent 的開發庫以及 PHP 8.5 的開發套件(php8.5-dev):
sudo apt update
sudo apt install libevent-dev php8.5-dev php-pear -y
## 2. 安裝與啟用內置的 Sockets 擴充
event 必須與 sockets 配合運作,請先確保 PHP 8.5 的 sockets 已經安裝:
sudo apt install php8.5-sockets -y
## 3. 透過 PECL 編譯安裝 event 擴充
使用 pecl 指令下載並編譯適用於 PHP 8.5 的 event 版本 (https://www.cnblogs.com/lizhaoyao/p/17268162.html):
sudo pecl -d php_suffix=8.5 install event
在編譯過程中,終端機畫面上會彈出幾項設定詢問,直接按 Enter(採取預設值) 即可 。核心幾項確認如下:
*
* Include libevent's pthreads library... ➜ 按 Enter
* Enable sockets support in Event ➜ 必須是 yes(預設即為 yes)
* Include libevent OpenSSL support ➜ 按 Enter
*
當看到 Extension event enabled in php.ini 或編譯完成提示時,代表二進位 .so 檔案已產生。
## 4. 設定 PHP 8.5 載入順序(關鍵步驟)
在 Debian 系統中,PHP 的擴充功能是透過 /etc/php/8.5/mods-available/ 目錄進行管理。
## 步驟 A:建立 event 的設定檔
sudo nano /etc/php/8.5/mods-available/event.ini
## 步驟 B:貼入以下內容
為了確保 event 晚於 sockets 載入,我們在 ini 檔中使用 priority 註解(Debian 的 phpenmod 工具會讀取此權重,數值愈大愈晚載入,一般 sockets 是 20,我們將 event 設為 30)
; priority=30
extension=event.so
儲存並離開 (Ctrl+O 然後 Ctrl+X)。
## 步驟 C:啟用擴充功能
使用 Debian 內置命令啟用 CLI 模式與 FPM 模式的 event 擴充:
sudo phpenmod -v 8.5 event
## 5. 驗證是否安裝成功
執行以下指令檢查 PHP 8.5 是否成功載入 event 模組:
php8.5 -m | grep -E "sockets|event"
預期的正確輸出:
event
sockets
(兩個都有顯示才算完全成功)
------------------------------
## 6. 讓 Workerman 應用生效
擴充功能啟用後,請重啟你的 Nginx 後台 PHP 服務(如使用 PHP-FPM)以及 重新啟動 Workerman 進程:
# 如果有使用 FPM
sudo systemctl restart php8.5-fpm
# 重啟你的 Workerman (依據上一題的專案路徑)
cd /var/www/workerman-app
php8.5 start.php restart -d
當 Workerman 重新啟動時,它會自動偵測到系統已安裝 event 擴充,並自動將底層的事件輪詢核心從 Select 升級切換為效能極高的 Event(Epoll)驅動。
如果您的 Workerman 啟動後拋出任何錯誤,請告訴我:
*
* 終端機顯示的 錯誤訊息 (Error Message)
* 執行 php8.5 -v 輸出的 PHP 精確版本號
*
我可以幫您排查是否有與 PHP 8.5 新特性衝突或編譯版本不相容的問題。