4月 24, 2023 - Linux, php开发    php通过ssh2链接到另一台服务器同步代码并重启php-fmp和supervisor已关闭评论

php通过ssh2链接到另一台服务器同步代码并重启php-fmp和supervisor

1:首先需要先按照php的ssh2拓展:

2:

//先测试拓展是否安装并开启
if (!function_exists('ssh2_connect')) {
    Log::error('SSH2扩展没有安装或者没有安装成功');

    return;
}

//建立ssh2连接
$ssh2 = ssh2_connect($ip, 22);
if (!$ssh2) {
    Log::error('连接服务器失败');

    return;
} else {
    Log::info('成功连接上了服务器');
    //连接成功后进行密码验证,没验证无法进行其他操作。
    if (!ssh2_auth_password($ssh2, 'root', 'MyPassword')) {
        Log::error('登录失败');

        return false;
    }
    Log::info('ssh2_connect 是否存在:'.function_exists('ssh2_connect'));
    //登录后的命令操作:
   /**
    * 改.env权限
    * 拉代码
    * 执行composer
    * 启动php和supervisor.
    */
    $code_update = "chown deployer:nginx /var/www/html/staging/mpace-stage.ixxud.cn/.env;su deployer -c 'cd /var/www/html/staging/mpace-stage.ixxd.cn/current;git pull;composer install --prefer-dist --no-scripts -q -o';systemctl restart php-fpm.service;/usr/bin/supervisord -c /etc/supervisord.conf";
    ssh2_exec($ssh2, $code_update);
}

2:获取ssh2的结果:

$stream = ssh2_exec($conn, 'php -v');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);

评论被关闭。