openssl: 加密算法集合,C语言实现libssh2:ssh2协议库库,C语言实现PECL/ssh2: libssh2的php扩展,允许php程序调用libssh2中的函数依赖关系:PECL/ssh2 –> libssh2 –> openssl
查看已安装的PHP扩展
$ php -m
1.安装 libssh2
Index of /downloadhttps://www.libssh2.org/download/
wget http://www.libssh2.org/download/libssh2-1.4.2.tar.gz
tar -zxvf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
./configure --prefix=/usr/local/libssh2
make && make install
2.编译安装 ssh2
PECL :: Package :: ssh2https://pecl.php.net/package/ssh2
不同版本php 安装不同版本的ssh2, 否则会无法编译 make错误
php6- : wget http://pecl.php.net/get/ssh2-0.13.tgz
或PHP7+ : wget http://pecl.php.net/get/ssh2-1.1.2.tgz
tar xvf ssh2-0.13.tgz 或 tar xvf ssh2-1.1.2.tgz
cd ssh2-0.13 或 cd ssh2-1.1.2
phpize ##没有的话yum install php-devel ubuntu apt-get install php7.0-dev
./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/usr/local/php/bin/php-config ##此处为自身环境下php配置文件,可通过find / -name php-config 进行查找
make && make install
3.复制到php的扩展目录
cp moduels/ssh2.so /usr/local/php/lib/php/extensions/no-debug-zts-20090626
4.修改 php 配置文件
-
find / -name php.ini ##查找php.ini文件的位置
-
echo "extension=ssh2.so" >> /usr/local/php/etc/php.ini
最后重启 php /etc/init.d/php-fpm restart
或者 systemctl restart php-fpm
5.查看是否成功
-
# php -m | grep ssh2
-
ssh2 ##出现这个证明成功
另一种方法安装------------------------------------------------------------------------------分割线
在 Centos 下用 yum 安装:
安装libssh2
#yum install libssh2 libssh2-devel
安装ssh2
#pecl install ssh2 #但是默认是安装0.13版本
安装失败:
> **pecl/ssh2 requires PHP (version >= 4.0.0, version <= 6.0.0), installed version is 7.1.0**
> No valid packages found
> install failed
原因已经提示得很明显。不支持 PHP 7。
所以可以使用 1.1版本 (PECL :: Package :: ssh2)
#pecl install ssh2-1.1
终于安装成功:
> Build process completed successfully
> Installing '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/ssh2.so'
> install ok: channel://pecl.php.net/ssh2-1.0
> Extension ssh2 enabled in php.ini
并且提示 ssh2 已经加入到 php.ini 中。
但如果从未用 pecl 设置好 php_ini 指明 php.ini 的位置,那就会出现类似下面这样的提示,就得有时候可能要自己手动加进 php.ini
> Build process completed successfully
> Installing '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/ssh2.so'
> install ok: channel://pecl.php.net/ssh2-1.0
> **configuration option "php_ini" is not set to php.ini location** #配置选项“php\u ini”未设置为php。ini位置
> You should add "extension=ssh2.so" to php.ini
可以用如下命令设置 php_ini
> [root@lnmp lnmp.cn]# pecl config-set php_ini /usr/local/php7/lib/php.ini
Windows 下 PHP安装SSH2
下载 php extension ssh2
下载地址 windows.php.net - /downloads/pecl/releases/ssh2/
根据自己PHP的版本去下载,可以看下自己的php版本,以及是32位的还是64位的,
32位的下载x86, 64位的下载x64
SSH2下面有不同的版本,PHP5+的选,0.12. PHP7+的,选择,1.0或者1.1等等
比如我是 PHP7.0, 32位,使用的是 nts 线程安全. 就选择
php_ssh2-1.0-7.0-nts-vc14-x86.zip
解压完后,会有文件,php_ssh.dll、php_ssh2.pdb。
如果你本机没有llbssh, 记得要去下载 libssh2.dll
将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。
将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份
php.ini中加入 extension=php_ssh2.dll
重启apache,即可使用php执行ssh连接操作了。
查看phpinfo(),是否有显示php_ssh2扩展加载成功。
PHP测试代码
代码如下:
$connection = ssh2_connect('192.168.255.128', 22);
ssh2_auth_password($connection, 'root', '123456');
ssh2_scp_send($connection, 'd:/tmp/test.txt', '/tmp/test.txt', 0644);
来源地址:https://blog.csdn.net/yule117737767/article/details/125203987