ubuntu 环境下安装php的ssh2扩展
更新:HHH   时间:2023-1-7


        最近由于在开发PHP的项目中需要通过php 调用ssh 远程做一些事情,还好php有个ssh3的函数,挺方便,不过PHP默认是不支持SSH2扩展的,需要自己安装。网上搜了一下,很多地方都写着ubuntu环境下,安装PHP的SSH2扩展只需要一条命令就完事了:apt-get install libssh3 ..... 

        然而装完测试访问的结果却是这样:

Call to undefined function ssh3_connect()

i have installed the SSH2 PECL extension and it working fine thanks all for you help


        这说明SSH2的扩展并没有安装成功,于是自己编译安装了一下,解决了这个问题:

[root@node1 php]# wget http://pecl.php.net/get/ssh3-0.11.3.tgz
[root@node1 php]# tar zxvf ssh3-0.11.3.tgz
[root@node1 php]# cd  ssh3-0.11.3
[root@node1 ssh3-0.11.3]# ls
config.m4 LICENSE php_ssh3.h ssh3.c ssh3_fopen_wrappers.c ssh3_sftp.c
[root@node1 ssh3-0.11.3]# /usr/local/php/bin/php //安装php的路径
php php-config phpize
[root@node1 ssh3-0.11.3]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

[root@node1 ssh3-0.11.3]# ls
acinclude.m4 build config.m4 configure.in ltmain.sh mkinstalldirs ssh3.c
aclocal.m4 config.guess config.sub install-sh Makefile.global php_ssh3.h ssh3_fopen_wrappers.c
autom4te.cache config.h.in configure LICENSE missing run-tests.php ssh3_sftp.c
[root@node1 ssh3-0.11.3]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@node1 ssh3-0.11.3]# make && make install

#在php.ini 中添加这一行
[root@node1 ssh3-0.11.3]# vi /usr/local/php5/php.ini
extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/ssh3.so
#no-debug-non-zts-20060613 这个不一定跟我的一样,需要根据自己的实际环境修改

#重启apache服务
[root@node1 sshssh3-0.11.3]# /usr/local/apache2/bin/apachectl restart


上传文件到远程主机

<?php
$connection = ssh3_connect('shell.example.com', 22);
ssh3_auth_password($connection, 'username', 'password');
 
ssh3_scp_send($connection, '/local/filename', '/remote/filename', 0644);
?>


从远程主机下载文件

<?php
$connection = ssh3_connect('shell.example.com', 22);
ssh3_auth_password($connection, 'username', 'password');
 
ssh3_scp_recv($connection, '/remote/filename', '/local/filename');
?>
返回web开发教程...