项目里用到了 sftp,所以需要安装一下 ssh2。
安装过程有个报错,开始还以为是不兼容 m1,好在最后顺利安装。
记录一下,以免再次跳坑。
安装 ssh
1 | pech install ssh2-1.3 |
安装过程中会询问 libssh2 的路径,默认会自动检测,然后,我的问题就来了:
The required libssh2 library was not found
首先排除一下 libssh2 有没有安装,没有安装的话执行 brew install libssh2,然后执行 brew link libssh2 查看其路径信息。

接下来,重新执行 pecl install ssh2-1.3,命令行询问路径时,将 /opt/homebrew/Cellar/libssh2/1.9.0_1 敲入回车即可。
文章作者: m-finder
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 M-finder!
相关推荐

2018-03-11
CentOS 7.2 64位安装LNMP php7+Mysql 5.7搭建教程
前前后后搭建过无数次环境,大大小小的坑也差不多都踩了,今天趁着腾讯搞活动,120块买了台16个月的服务器,想着晚上把环境搭建下吧,结果把之前的文档掏出来发现是没更新的,最新版在公司…… 算了,老子再搞一遍,放在网上随便看。 更新组件123456789yum -y updateyum -y groupinstall 'Development Tools'yum install gcc-c++ patch readline readline-devel zlib zlib-devel bzip2 autoconf automake libtool bison iconv-devel libyaml-devel libffi-devel openssl-devel make yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sql...

2018-06-12
Laravel使用ftp传输文件时报错ftp_put() No data connection的解决
代码: 123456789101112131415161718192021222324252627282930313233<?php$file = "test.dat";$ftp_server="ftp.server.com";$ftp_user = "myname";$ftp_pass = "mypass";$destination_file = "test.dat";$cid=ftp_connect($ftp_server);if(!$cid) { exit("Could not connect to server: $ftp_server\n");}$login_result = ftp_login($cid, $ftp_user, $ftp_pass);if (!$login_result) { echo "FTP connection has failed!"; echo &qu...

2021-05-11
centos php7.4 安装记录
最近记性不太好,做个记录,防止下次忘了。 若果有遗漏,之后再补充。 更新1yum update && yum upgrade 安装 php7.4 的 yum 源12345yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmyum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum -y install yum-utils 安装 php 7.412yum-config-manager --enable remi-php74yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json 安装新版 mariadb先加个源: 1234567vim /e...

2019-04-12
laravel 广播系统学习
看到广播系统,先想起了曾经虐过我的即时通讯。 虽然都是对 websocket 的应用,但是好像又有点区别,这里好好学习一下。 laravel 的广播与事件紧密相关,广播即对事件进行广播,因此在学习广播之前,要先阅读事件和监听器的相关文档。 配置老规矩,先来看配置文件 config/broadcasting.php 里边的配置选项: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960<?phpreturn [ /* |-------------------------------------------------------------------------- | Default Broadcaster |-------------------------------------------------------------------------- | | ...

2021-03-25
php ziparchive addfile return false
有个文件,存储了两条准备用于给文件重命名的字符串和文件路径的数据,每行一条,名称和字符串以 , 间隔。 然后问题来了,通过读文件取出数据,然后获取文件路径并打包时,ZipArchive 的 addFile 总会有一个 false。 折腾半天,最后发现还是因为粗心大意,没过滤行尾的换行符…… 一声叹息,掏出小本本默默记上一笔。 最后附上代码: 12345678910111213141516171819202122232425<?php$txt_file = './zip.txt';$zip = new ZipArchive();$fileName = './res.zip';$path = '/opt/homebrew/var/www/';if(file_exists($fileName)){ unlink($fileName);}if(!$zip->open($fileName, ZipArchive::CREATE)){ echo '文件读取失败'...

2024-02-28
Laravel Octane 和 Swoole 协程的使用分析
之前在工作中使用 Laravel Octane 的 concurrently 处理并发时,发现在队列和定时任务中不会触发并发效果。经过分析,作了如下猜测:队列定时任务都属于一个独立的进程,与 Octane 服务无关,而 Octane conturrently 恰恰需要在 Octane 环境下才能运行。 后来通过代码进行环境检测和查看 php 的进程,证明猜想成立。 1234info('check env', [ 'served by octane' => isset($_SERVER['LARAVEL_OCTANE']) && ((int)$_SERVER['LARAVEL_OCTANE'] === 1), 'on swoole server' => (extension_loaded('swoole') || extension_loaded('openswoole')) && app...