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);