[英]can't use php's ssh2_exec to restart nginx or get the nginx version
我已经安装了PHP扩展名ssh2,并且工作正常。 但是当我想使用它来获取远程服务器的nginx版本或在我也使用ssh2更改远程配置文件后重新启动nignx时,它就无法按我的意愿工作。
我的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
不能被执行
我的建议是停止使用libssh2并开始使用phpseclib(纯PHP SSH实现) 。
ssh2_exec()(使用php5 ssh ext)有时永远不会返回输出,有时会返回! 这是将blocking设置为true,甚至添加等待时间,这是不行的。 尝试连接到LOCALHOST,有时会获得输出,有时却没有。 我正在运行Karmic Ubuntu,而我的一生让我无休止。 phpseclib,但是,完美的作品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.