swoole 編譯安裝

coderChenZR發表於2022-06-23

Swoole編譯安裝步驟

Swoole擴充套件是按照php標準擴充套件構建的。使用phpize來生成php編譯配置,./configure來做編譯配置檢測,make進行編譯,make install進行安裝。

  • 請下載releases版本的swoole,直接從github主幹上拉取最新程式碼可能會編譯不過
  • 如果當前使用者不是root,可能沒有php目錄的寫許可權,安裝時需要 sudo或者 su
  • 如果是在git分支上直接 git pull更新程式碼,重新編譯前務必要執行 make clean

安裝準備

安裝swoole前必須保證系統已經安裝了下列軟體

php-5.3.10 或更高版本
gcc-4.4 或更高版本
make
autoconf

下載地址

下載原始碼包後,在終端進入原始碼目錄,執行下面的命令進行編譯和安裝

cd swoole
phpize
./configure
make 
sudo make install

(注:swoole的./configure有很多額外引數,可以通過./configure --help命令檢視,這裡僅開啟其中async-mysql項,其他均選擇預設項) 這裡是./configure編譯配置的額外引數,用於開啟某些特性

1.8.7或更高版本不再需要設定--enable-async-mysql和--enable-async-httpclient,async_mysql和async_httpclient改為內建
--enable-swoole-debug
開啟除錯日誌,開啟此選項後swoole將列印各類細節的除錯日誌。生產環境不要啟用。
--enable-sockets
增加對sockets資源的支援,依賴sockets擴充套件。開啟此引數,swoole_event_add就可以新增sockets擴充套件建立的連線到swoole的事件迴圈中。
--enable-async-mysql
增加非同步mysql支援, 依賴mysqli和mysqlnd擴充套件。
--enable-async-redis
增加非同步Redis客戶端支援, 依賴hiredis庫
--enable-async-httpclient
增加非同步Http和WebSocket客戶端支援
--enable-ringbuffer
開啟RingBuffer記憶體池
此設定為試驗性質,主要用於提升效能,生產環境請不要開啟
--enable-openssl
啟用SSL支援

swoole專案已收錄到PHP官方擴充套件庫,除了手工下載編譯外,還可以通過PHP官方提供的pecl命令,一鍵下載安裝swoole

pecl install swoole

配置php.ini

編譯安裝成功後,修改php.ini加入

extension=swoole.so

通過php -m或phpinfo()來檢視是否成功載入了swoole,如果沒有可能是php.ini的路徑不對,可以使用php -i |grep php.ini來定位到php.ini的絕對路徑。

安裝成功後通過phpinfo()檢視到的資訊:

安裝常見錯誤

make或make install無法執行或編譯錯誤

注意:PHP 訊息:PHP 警告:PHP 啟動:swoole:無法初始化模組
API 編譯的模組=20090626使用模組 API 編譯的
PHP=20121212
這些選項需要在 0 行的“未知”中匹配

php版本和編譯時使用的phpize和php-config不對應,需要使用絕對路徑來進行編譯。使用絕對路徑執行PHP。

/usr/local/php-5.4.17/bin/phpize
./configure --with-php-config=/usr/local/php-5.4.17/bin/php-config
/usr/local/php-5.4.17/bin/php server.php

缺少mysql標頭檔案

php_mysqli_structs.h:64:23: fatal error: my_global.h: No such file or directory

沒有找到mysqlclient的標頭檔案,需要安裝mysqlclient-dev

建議自行編譯php,不要使用Linux包管理系統自帶的php版本

缺少pcre.h標頭檔案

fatal error: pcre.h: No such file or directory

原因是缺少pcre,

找不到自動

phpize命令需要autoconf工具,請先安裝它。

使安裝失敗

make install需要root許可權,如果不是以root使用者登入的,請用sudo或su,再進行安裝。

修改了php.ini後,php -m或phpinfo中沒有swoole

php -i|grep php.ini

檢視載入的php.ini路徑,確認載入了正確的php.ini。

修改php.ini,開啟錯誤顯示,檢視是否存在啟動時錯誤。

display_errors => On  
display_startup_errors => On

錯誤:引數過多,無法執行“zend_exception_error”

你的PHP版本低於PHP-5.3.10,請升級PHP版本。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018476/viewspace-2902538/,如需轉載,請註明出處,否則將追究法律責任。

相關文章