想要php连接ssh服务端,则需要给php源码安装ssh2.so扩展。ssh2扩展的编译依赖于libssh2。
例如:下面这些函数
1. 如何确认是否安装了以上扩展?
在php文件中调用phpinfo()方法, 在页面能看到以下内容,说明安装libssh2和ssh2扩展
2 如何安装以上扩展?
!!!首先确保服务器已安装php
Linux系统:
下载libssh2包: www.libssh2.org/download/
下载ssh2包: pecl.php.net/package/ssh2
本次示例,php-7.3.26 , libssh2 和 ssh2 都下载的最新版本:libssh2-1.10.0.tar.gz, ssh2-1.3.1.tgz
第一步:编译libssh2扩展
假设文件下载到/home/test/目录
cd /home/test/
解压
>tar -zxvf libssh2-1.10.0.tar.gz
>cd libssh2-1.10.0
>./configure
> make && make install
第二步:编译ssh2扩展
假设文件下载到/home/test/目录
cd /home/test/
解压
>tar -zxvf ssh2-1.3.1.tgz
>cd ssh2-1.3.1 (进入可查看文件夹内容,没得configure文件)
> phpize (这是php的编译工具,于php的可执行文件在同目录, 执行后得到configure文件)
>./configure --with-ssh2 --with-php-config=/user/local/php/bin/php-config(就是php安装目录/bin/php-config)
> make && make install
ssh2编译成功后得到ssh2.so扩展,地址: /user/local/ssh2/modules/ssh2.so
同时会提示这个so文件已经被复制到了php的扩展文件(若没有可手动复制过去), 地址如下 : Installing shared extensions: /user/local/php/lib/php/extensions/no-debug-non-zts-20180731/
最后,在php.ini中增加如下语句, 然后重启php。 使用1中方式可确认扩展是否安装好。
extension=ssh2.so
Windows系统
通过phpinfo() 确认系统是64位还是32位,是NTS还是TS(线程安全),以及VC版本,然后下载对应的包。
下载libssh包:windows.php.net/downloads/php-sdk/...
下载php-ssh2包:windows.php.net/downloads/pecl/rel...
解压以上2个压缩包, 分别得到三个重要文件:libssh2.dll、php_ssh2.dll、php_ssh2.pdb
- 第一步:将 php_ssh2.dll、php_ssh2.pdb 放到php安装目录下的 /ext/ 中
- 第二步:将libssh2.dll 复制到 C:/windows/system32 和 C:/windows/syswow64 (64位系统才有)各一份
- 第三步:php.ini中加入 extension=php_ssh2.dll
- 第四步:重启php。 确认扩展是否安装成功,见1