- 本文不針對 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