не может использовать php ssh2_exec для перезапуска nginx или получения версии nginx - PullRequest
0 голосов
/ 22 февраля 2011

Я установил расширение 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 Ответ

1 голос
/ 25 февраля 2011

Я бы рекомендовал прекратить использование libssh2 и начать использовать phpseclib, чистую реализацию PHP SSH .

ssh2_exec () (с использованием php5 ssh ext) иногда никогда не возвращает выходные данные, а иногда и возвращает! Это с установкой блокировки на true и даже с добавлением периодов ожидания, что является нет-нет. Попробуйте подключиться к LOCALHOST, и иногда вы получите вывод, иногда нет. Я управляю Karmic Ubuntu, и за всю мою жизнь разозлил меня до бесконечности. phpseclib, однако, работает отлично.

...