- 本文不針對 pecl 安裝的 swoole,建議也不要使用這個方式安裝,因為這種方式安裝的 swoole 無法自定義編譯選項
- 一個穩定的 PHP5 版本,雖然已經支持 PHP7 了,但似乎還有暗坑,建議使用 PHP5.6
- 一個穩定的 swoole 版本,使用帶有 stable 的版本,由於 swoole 還在不斷完善中,每個版本都會有 bug 的解決,所以請使用 2.0 以下的最新 stable 版本
Swoole 擴展編譯失敗,如何解決
- 某些依賴未安裝,如 openssl, libcompress 之類,按提示安裝就好,swoole 提示可能不會很明顯
- 權限問題,swoole 源碼目錄不要使用 windows 掛載的目錄
如何查看是否已經安裝成功
// 通常情況下,編譯安裝成功,swoole.so 會添加到默認擴展目錄下,目錄查看/php-path/bin/php-config --extension-dir
// 此命令會輸出 swoole 版本及默認配置,如果沒有輸出或者報錯,則說明擴展僅僅編譯成功,未啟用
php --ri swoole
// 某些情況下,你的 php-fpm和php-cli使用的不是同一個php.ini// php-fpm 查看php.ini配置路徑,請使用phpinfo函數// php-cli 查看 php.ini 配置路徑
php --ini|grep "Loaded"// 輸出的路徑如果和phpinfo中的路徑一致,則表示使用的同一個php.ini,反之則不是,啟用擴展時請選擇正確的配置文件
擴展已經安裝成功,但運行提示 'xxx' class not found
// 前提是你擴展安裝並啟用成功,也就是說你是通過命令行運行的文件
php filename.php
// 命令行下 swoole 已經啟用
php --ri swoole
// 在輸出注意輸出中有一項 use_namespace,如果此項為1,則需要使用命令空間// swoole_server => \Swoole\Server// 在確認擴展啟用無誤的情況下,class not found 都是這個原因造成的
服務端已經啟動,客戶端連接不上
- 請檢查防火牆規則
- 如果使用的虛擬機,請檢查端口映射是否已經添加
提示 SWOOLE_SSL 常量未定義
// 查看swoole編譯選項 openssl 是否為 enable狀態
php --ri swoole