不能使用php的ssh2_exec来重启nginx或获取nginx版本

时间:2011-02-22 03:33:34

标签: php ssh restart

我已经安装了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 

无法执行

1 个答案:

答案 0 :(得分:1)

我的建议是停止使用libssh2并开始使用phpseclib, a pure PHP SSH implementation

ssh2_exec()(使用php5 ssh ext)有时候永远不会返回输出,有时候会输出!这是设置阻塞为true,甚至添加等待时间,这是一个不。尝试连接到LOCALHOST,有时你会得到输出,有时不会。我正在运行Karmic Ubuntu,在我的生活中,我生气了。然而,phpseclib工作得很完美。