看了網(wǎng)上的各種教程瞎惫,編譯安裝還是Perl安裝溜腐,不管哪種辦法,都是各種報(bào)錯(cuò)瓜喇。挺益。。
我的環(huán)境是homestead乘寒,各種琢磨望众,總結(jié)一下,mmp
我的homestead下有n多個(gè)php版本
vagrant@homestead:/etc/alternatives$ ls /usr/bin/php
php php7.0 php7.2 php-config5.6 php-config7.1 phpize phpize7.0 phpize7.2
php5.6 php7.1 php-config php-config7.0 php-config7.2 phpize5.6 phpize7.1
是的伞辛,有這么多烂翰,我自己都怕
看一下當(dāng)前版本,php -v
PHP 7.1.10-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 29 2017 17:04:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.10-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
with blackfire v1.18.0~linux-x64-non_zts71, https://blackfire.io, by SensioLabs
當(dāng)前是7.1的蚤氏,開(kāi)始安裝swoole甘耿,直接用Perl 安裝,去他媽的編譯安裝
$ sudo pecl channel-update pecl.php.net
$ sudo pecl install swoole
安裝的時(shí)候會(huì)問(wèn)你yes/no之類的選項(xiàng)竿滨,我全部enter下去佳恬,經(jīng)過(guò)漫長(zhǎng)的等待。于游。毁葱。
Build process completed successfully
Installing '/usr/include/php/20170718/ext/swoole/config.h'
Installing '/usr/lib/php/20170718/swoole.so'
install ok: channel://pecl.php.net/swoole-4.2.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini
看到有success我就放心了,上面提示了贰剥,你應(yīng)該添加 extension=swoole.so
到php.ini文件倾剿,php.ini文件在哪呢,用這條命令就可以了php -i|grep php.ini
vagrant@homestead:~$ php -i|grep php.ini
Configuration File (php.ini) Path => /etc/php/7.1/cli
Loaded Configuration File => /etc/php/7.1/cli/php.ini
vim編輯一下 /etc/php/7.1/cli/php.ini
蚌成,差不多在這個(gè)位置
;extension=xsl
extension=swoole.so // 加到這里哦親
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
然后柱告,重啟一下php,fpm有php7.1-fpm php7.2-fpm還有其他等等笑陈,要哪個(gè)呢际度,php -v看下版本,就用對(duì)應(yīng)的版本就可以了涵妥,我當(dāng)前是7.1乖菱,就用php7.1-fpm,好了蓬网,跑起來(lái)
sudo service php7.1-fpm reload
然后窒所,看一下效果,php -m看看有沒(méi)有
php -m |grep swoole
沒(méi)有就算了帆锋,還多了個(gè)報(bào)錯(cuò)吵取。。锯厢。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/swoole.so' - /usr/lib/php/20160303/swoole.so: cannot open shared object file: No such file or directory in Unknown on line 0
實(shí)在是很氣皮官,提示找不到文件脯倒,看一下這個(gè)擴(kuò)展extension的路徑好像有點(diǎn)不對(duì),回到剛才swoole安裝完打印的消息
Installing '/usr/include/php/20170718/ext/swoole/config.h'
Installing '/usr/lib/php/20170718/swoole.so'
20160303跟20170718捺氢,這特么明顯對(duì)不上啊藻丢,swoole怎么會(huì)安裝到哪里去了咧,看一下php extension目錄摄乒,執(zhí)行php-config或者直接php-config --extension-dir
vagrant@homestead:~$ php-config --extension-dir
/usr/lib/php/20170718
那20160303是怎么來(lái)的呢悠反,奇了個(gè)怪,再看php -i|grep extension
vagrant@homestead:~$ php -i| grep extension
extension_dir => /usr/lib/php/20160303 => /usr/lib/php/20160303
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
extension Version => 2.0.2
sqlite3.extension_dir => no value => no value
原來(lái)如此馍佑,怎么這兩個(gè)extension目錄不一樣呢斋否,看一下/usr/lib/php/目錄有哪些
vagrant@homestead:~$ ls /usr/lib/php/
20131226 20160303 5.6 7.1 php5.6-fpm-reopenlogs php7.1-fpm-reopenlogs php-helper sessionclean
20151012 20170718 7.0 7.2 php7.0-fpm-reopenlogs php7.2-fpm-reopenlogs php-maintscript-helper
我猜7.1是對(duì)應(yīng)20160303,7.2是對(duì)應(yīng)20170718的拭荤,那想辦法把7.1換成7.2試一下如叼,切換php版本,參考了這位網(wǎng)友的回答
請(qǐng)教一下 vagrant laravel Homestead 怎么切換 PHP 版本呀穷劈?
cd /etc/alternatives
sudo mv php php.bak
sudo ln -s /usr/bin/php7.2 php
然后再看一眼版本,php -v
vagrant@homestead:~$ php -v
PHP 7.2.0RC3 (cli) (built: Sep 28 2017 16:28:14) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0-dev, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.2.0RC3, Copyright (c) 1999-2017, by Zend Technologies
with blackfire v1.18.0~linux-x64-non_zts72, https://blackfire.io, by SensioLabs
順利改過(guò)來(lái)了踊沸,并不簡(jiǎn)單歇终,再執(zhí)行
// 重啟一下
sudo service php7.2-fpm reload
php -m |grep swoole
還是上面的報(bào)錯(cuò)。逼龟。评凝。。這里還少了一步腺律,再看一眼php -i|grep php.ini
vagrant@homestead:~$ php -i |grep php.ini
Configuration File (php.ini) Path => /etc/php/7.2/cli
Loaded Configuration File => /etc/php/7.2/cli/php.ini
此時(shí)的ini已經(jīng)不是彼時(shí)的ini奕短,剛才是7.1目錄下的,現(xiàn)在切換版本變成了7.2目錄下的匀钧,vim編輯 /etc/php/7.2/cli/php.ini
把剛才的extension=swoole.so再加上去翎碑,加完了別忘了重啟
sudo service php7.2-fpm reload
重啟完了,再 php -m |grep swoole
這下子終于出來(lái)了
vagrant@homestead:~$ php -m |grep swoole
swoole
一把辛酸淚之斯,折騰了大半天終于整出來(lái)了