一、背景

前段时间把Mac系统重装了,PHP的一些扩展都没了,昨天需要调试一个swoole开发的项目,发现命令行中的PHP是系统自带的,如果安装swoole扩展很不方便;需要自己手动去下载swoole的源码,然后去编译swoole的源码,并自己配置,整个过程非常繁琐;

我记得之前用brew安装的PHP,再使用pecl很方便就可以安装swoole,于是我把自带的PHP卸载然后重新使用brew安装,并且安装了pecl,在通过pecl安装了swoole扩展,把这个安装过程记录下来,方便下次使用吧

二、操作概要

  1. 卸载自带软件
  2. 重新安装软件
  3. 验证swoole扩展

三、卸载自带软件

之前Mac系统升级到10.15 catalina 版本,发现在卸载自带PHP的时候提示Read-only file system,网上找了一下解决方法是需要关闭系统的sip,然后才可以删除一些文件,执行的命令如下所示

sudo mount -uw /

命令执行之后,返回的信息如下图所示

在上图中可以看到命令已经执行成功,接着我们就可以删除自带的PHP,我们首先要找出自带PHP的位置,查看PHP位置命令如下所示

which php

命令执行之后,返回的信息如下图所示



在上图中可以看到返回了一个PHP的路径,我们将它删除即可,删除自带的PHP的命令如下所示

sudo rm -rf /usr/local/bin/php

命令执行之后,返回的信息如下图所示



在上图中可以看到rm命令没有提示异常,说明删除自带的PHP已经成功。

为了防止我们之前使用brew安装过老版本的PHP,我们也尝试卸载brew安装的PHP版本,卸载brew安装的PHP老版本命令如下所示

这一步骤不是必须的,但为了防止安装过程当中产生意外问题,所以可以的话就卸载,不卸载也可以直接跳到安装pecl步骤中

brew uninstall php

命令执行之后,返回的信息如下图所示



在上图中可以看到已经成功卸载了brew安装的PHP版本

四、重新安装

我们使用brew命令来安装PHP的新版本,brew本身也是需要安装的,但相信大家已经安装过了,使用brew安装php命令如下所示

brew install php

命令执行之后,返回的信息如下图所示

在上图中可以看到安装的PHP版本为7.3,也显示了PHP的安装位置,说明我们已经安装成功了。

接下来我们安装pecl,首先需要去php的官网下载pecl的安装包,执行命令如下所示

wget http://pear.php.net/go-pear.phar

命令执行之后,返回的信息如下图所示

在上图中可以看到已经将安装包下载完成,接下来我们使用PHP执行此安装包即可,执行命令如下所示

sudo php go-pear.phar

命令执行之后,返回的信息如下图所示

在上图中可以看到pecl已经安装完成,现在我们就可以使用pecl安装swoole了,执行命令如下所示

pecl install swoole

这条命令会有一个编译的过程,执行的时间有点长,在命令执行之后,返回的信息如下图所示

在上图中可以看到已经执行成功,并且自动将swoole扩展安装到了PHP的扩展目录,并添加到了配置文件当中。

五、验证swoole扩展

在swoole安装完成之后,我们可以通过下面两种方式来验证安装的可用性,首先是通过查看php安装的扩展模块命令,看看是否显示了swoole,执行命令如下所示

php -m

命令执行之后,返回的信息如下图所示

在上图中可以看到返回了swoole,说明php安装了swoole模块,我们接着找一个依赖swoole的项目,我这里有一个用laravel开发的项目需要一来到swoole,启动命令如下所示

php artisan laravels start

命令执行之后,返回的信息如下图所示

在上图中可以看到显示了PHP和swoole的版本信息,到此说明我们整个安装过程已经完成了

六、 图书推荐

如果对笔者的实践文章较为感兴趣,可以关注笔者出版社《PHP Web安全开发实战》,现已在各大平台上架销售,封面如下图所示

作者:汤青松

微信:songboy8888

日期:2019-12-03

最新文章

  1. 十二. 一步步破解JEB 2.0demo版二
  2. Memcached存储命令 - set
  3. javascript settimeout and setinterval
  4. http数据包解析碰到gzip压缩格式的解压
  5. ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem
  6. javascript內容向上不間斷滾動
  7. 为MyEclipse加入自己定义凝视
  8. BZOJ 1024 SCOI 2009 生日快乐 深搜
  9. .NET对象占内存多少
  10. 11.并发包阻塞队列之LinkedBlockingQueue
  11. C++11 中值得关注的几大变化(网摘)
  12. python 等频率切分数据
  13. net core体系-web应用程序-4net core2.0大白话带你入门-10asp.net core session的使用
  14. ServiceMesh究竟解决什么问题?
  15. AttributeError: 'int' object has no attribute 'isdigit'(python下的isdigit函数)
  16. SpringBoot------如何将项目打成war包
  17. 函数使用一:采购订单BAPI_PO_CREATE1
  18. Orchard之模版开发
  19. python面向对象重新梳理
  20. Alwayson--辅助副本状态

热门文章

  1. IOS配置cocos2d-x
  2. js原型继承四步曲及原型继承图
  3. JS随机产生颜色
  4. webgoat的构建
  5. ci用户登录
  6. mysql 的特殊函数
  7. 网站统计中的PV-UV-IP的定义与区别
  8. 一张图轻松掌握 Flink on YARN 应用启动全流程(上)
  9. 关于IDEA中maven项目中在pom.xml导入依赖报错的解决方法
  10. Java笔记 - GUI编程