我已经安装了php扩展ssh2,它运行正常。但是当我想用它来获取远程服务器的nginx版本或者在我更改遥控器的配置文件后重新启动nignx也使用ssh2,它不能正常工作。
我的PHP代码是这样的:
<?php
$connection = ssh2_connect('115.238.73.136', '65000', array('hostkey'=>'ssh-rsa'));
if(!$connection) "error_1\n";
if(ssh2_auth_pubkey_file($connection, 'root','/data/web/control_center/sh/.ssh/id_rsa.pub','/data/web/control_center/sh/.ssh/id_rsa', 'test')){
$stream = ssh2_exec($connection, "/usr/local/nginx/sbin/nginx -v");
stream_set_blocking($stream, true);
while( !feof($stream) ) {
$cmd[] = fgets($stream);
}
var_dump($cmd);
}
$ cmd中没有任何内容。然后我改变了“
/usr/local/nginx/sbin/nginx -v
到
/usr/local/nginx/sbin/nginx -t;
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`;
我也得不到任何东西。
/usr/local/nginx/sbin/nginx
无法执行
答案 0 :(得分:1)
我的建议是停止使用libssh2并开始使用phpseclib, a pure PHP SSH implementation。
ssh2_exec()(使用php5 ssh ext)有时候永远不会返回输出,有时候会输出!这是设置阻塞为true,甚至添加等待时间,这是一个不。尝试连接到LOCALHOST,有时你会得到输出,有时不会。我正在运行Karmic Ubuntu,在我的生活中,我生气了。然而,phpseclib工作得很完美。