MacOS 10.13.3下PHP7.1.7安装SSH2扩展失败求助
解决MacOS 10.13.3 + PHP7.1.7下SSH2扩展安装与调用问题
我之前在相同环境下踩过完全一样的坑——官方PECL仓库里的ssh2扩展版本确实只支持到PHP6,没法直接用pecl install ssh2安装。而且因为扩展没装,调用ssh2_sftp($this->con)时PHP找不到全局函数,就会误以为你是在调用类内的方法,报出类似“找不到类内方法”的错误。下面是亲测有效的解决方案:
步骤1:安装依赖库
首先用Homebrew安装OpenSSL和libssh2(如果没装Homebrew先完成安装):
brew install openssl libssh2
步骤2:获取支持PHP7的SSH2源码
官方PECL的旧版本不兼容PHP7,咱们用PHP官方维护的适配PHP7的分支源码:
git clone https://github.com/php/pecl-networking-ssh2.git cd pecl-networking-ssh2 # 切换到专门适配PHP7的分支 git checkout php7
步骤3:编译并安装扩展
用phpize生成编译配置,注意指定OpenSSL的Homebrew安装路径:
phpize ./configure --with-ssh2 --with-openssl-dir=/usr/local/opt/openssl make && sudo make install
步骤4:启用扩展
找到你的PHP7.1对应的php.ini文件(可以通过php --ini命令查看加载的配置文件路径),在文件末尾添加一行:
extension=ssh2.so
步骤5:验证安装与解决调用问题
重启你的Web服务(比如Apache或Nginx),然后在终端执行:
php -m | grep ssh2
如果输出ssh2,说明扩展安装成功了。这时候再调用ssh2_sftp($this->con),PHP就能找到全局的ssh2扩展函数,不会再误认为是类内方法了。
内容的提问来源于stack exchange,提问作者Oman
相关产品推荐
相关产品推荐

