小韦云博文

PHP实现shell功能并实时输出

小韦云科技-区块链+小程序+公众号+商城+分销+直播+企业官网+外贸电商-为您提供优质的开发服务-电话/微信联系:18123611282

安装最新版libssh2

访问libssh2官网:https://www.libssh2.org/

在Download中复制最新版的下载地址

然后在服务器中执行(以2.1.9为例)

wget https://www.libssh2.org/download/libssh2-1.9.0.tar.gz
tar zxf libssh2-1.9.0.tar.gz
cd libssh2-1.9.0
./configure && make && make install

为PHP安装ssh2扩展

访问ssh2扩展的官网:http://pecl.php.net/package/ssh2

由上图可知,1.0及以上的版本仅支持PHP7以上的版本,对于PHP5需要安装旧版本,这里由于我的PHP版本为7.2,因此可以下载最新1.2版本

下载并安装

wget http://pecl.php.net/get/ssh2-1.2.tgz

tar -xvf ssh2-1.2.tgz
cd ssh2-1.2/
#开始编译
phpize
#宝塔的php-config路径是:/www/server/php/版本/bin/php-config,需要改成自己的版本,如72
./configure --with-php-config=/www/server/php/72/bin/php-config
make && make install

编译好后就可以打开宝塔面板直接在php配置修改中添加

extension=ssh2.so

重启服务后就可以在phpinfo里看到SSH2的配置

验证测试

创建一个测试脚本,每秒输出一个时间

cd ~
echo -e '#!/bin/bash\necho "user name = ${USER}"\nfor((i=0;i<10;i++))\ndo\n    sleep 1\n    echo $(date +"%Y-%m-%d %H:%M:%S")\ndone' > test.sh
chmod +x test.sh

创建PHP文件

<?php
set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('X-Accel-Buffering: no');
//初始化连接
$conn = ssh2_connect('127.0.0.1', '22');
ssh2_auth_password($conn, 'root', '123456');

$stream = ssh2_exec($conn, "/root/test.sh");
stream_set_blocking($stream, true);
while ($o = fgets($stream)) {
    echo ($o) . '<br/>';
}

把PHP文件放到你的网站目录就可以通过浏览器访问,效果如下

能实时输出结果!

本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/12/1914,否则追究其法律责任

关键词:libssh2

广告位招商