Swoole 編譯安裝

2020-12-29 16:27 更新

Swoole編譯安裝步驟

Swoole擴(kuò)展是按照php標(biāo)準(zhǔn)擴(kuò)展構(gòu)建的。使用phpize來(lái)生成php編譯配置,./configure來(lái)做編譯配置檢測(cè),make進(jìn)行編譯,make install進(jìn)行安裝。

  • 請(qǐng)下載releases版本的swoole,直接從github主干上拉取最新代碼可能會(huì)編譯不過(guò)
  • 如果當(dāng)前用戶(hù)不是root,可能沒(méi)有php目錄的寫(xiě)權(quán)限,安裝時(shí)需要sudo或者su
  • 如果是在git分支上直接git pull更新代碼,重新編譯前務(wù)必要執(zhí)行make clean

安裝準(zhǔn)備

安裝swoole前必須保證系統(tǒng)已經(jīng)安裝了下列軟件

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

下載地址

下載源代碼包后,在終端進(jìn)入源碼目錄,執(zhí)行下面的命令進(jìn)行編譯和安裝

cd swoole
phpize
./configure
make 
sudo make install

(注:swoole的./configure有很多額外參數(shù),可以通過(guò)./configure --help命令查看,這里僅開(kāi)啟其中async-mysql項(xiàng),其他均選擇默認(rèn)項(xiàng)) 這里是./configure編譯配置的額外參數(shù),用于開(kāi)啟某些特性

1.8.7或更高版本不再需要設(shè)置--enable-async-mysql和--enable-async-httpclient,async_mysql和async_httpclient改為內(nèi)置
--enable-swoole-debug
打開(kāi)調(diào)試日志,開(kāi)啟此選項(xiàng)后swoole將打印各類(lèi)細(xì)節(jié)的調(diào)試日志。生產(chǎn)環(huán)境不要啟用。
--enable-sockets
增加對(duì)sockets資源的支持,依賴(lài)sockets擴(kuò)展。開(kāi)啟此參數(shù),swoole_event_add就可以添加sockets擴(kuò)展創(chuàng)建的連接到swoole的事件循環(huán)中。
--enable-async-mysql
增加異步mysql支持, 依賴(lài)mysqli和mysqlnd擴(kuò)展。
--enable-async-redis
增加異步Redis客戶(hù)端支持, 依賴(lài)hiredis庫(kù)
--enable-async-httpclient
增加異步Http和WebSocket客戶(hù)端支持
--enable-ringbuffer
開(kāi)啟RingBuffer內(nèi)存池
此設(shè)置為試驗(yàn)性質(zhì),主要用于提升性能,生產(chǎn)環(huán)境請(qǐng)不要開(kāi)啟
--enable-openssl
啟用SSL支持

PECL

swoole項(xiàng)目已收錄到PHP官方擴(kuò)展庫(kù),除了手工下載編譯外,還可以通過(guò)PHP官方提供的pecl命令,一鍵下載安裝swoole

pecl install swoole

配置php.ini

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

extension=swoole.so

通過(guò)php -m或phpinfo()來(lái)查看是否成功加載了swoole,如果沒(méi)有可能是php.ini的路徑不對(duì),可以使用php -i |grep php.ini來(lái)定位到php.ini的絕對(duì)路徑。


安裝成功后通過(guò)phpinfo()查看到的信息:

安裝常見(jiàn)錯(cuò)誤

make或make install無(wú)法執(zhí)行或編譯錯(cuò)誤

NOTICE: PHP message: PHP Warning: PHP Startup: swoole: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20121212
These options need to match
in Unknown on line 0

php版本和編譯時(shí)使用的phpize和php-config不對(duì)應(yīng),需要使用絕對(duì)路徑來(lái)進(jìn)行編譯。使用絕對(duì)路徑執(zhí)行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

沒(méi)有找到mysqlclient的頭文件,需要安裝mysqlclient-dev

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

缺少pcre.h頭文件

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

原因是缺少pcre,需要安裝libpcre

Cannot find autoconf

phpize命令需要autoconf工具,請(qǐng)先安裝它。

make install失敗

make install需要root權(quán)限,如果不是以root用戶(hù)登錄的,請(qǐng)用sudo或su,再進(jìn)行安裝。

修改了php.ini后,php -m或phpinfo中沒(méi)有swoole

php -i|grep php.ini

查看加載的php.ini路徑,確認(rèn)加載了正確的php.ini。

修改php.ini,打開(kāi)錯(cuò)誤顯示,查看是否存在啟動(dòng)時(shí)錯(cuò)誤。

display_errors => On  
display_startup_errors => On

error: too many arguments to function 'zend_exception_error'

你的PHP版本低于PHP-5.3.10,請(qǐng)升級(jí)PHP版本。

如果還是編譯失敗了怎么辦?

不要?dú)怵H,加入我們的開(kāi)發(fā)組QQ群:495864936,你的問(wèn)題會(huì)在24小時(shí)內(nèi)被解決。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)