Мне нужно проверить соединение с помощью функции http://php.net/manual/en/function.ssh2-connect.php
Но если я сделал такой чек
$connection = ssh2_connect('myserver.com', 22); if (!$connection){ echo 'no connection'; }else{ echo 'connection ok'; }
Я никогда не попадаю в строку «эхо» без связи »;
Можете ли вы объяснить мне, почему? И как это сделать?
Заранее спасибо!
Это зависит от вашего сервера. Попробуйте подключиться к какой-то несуществующей и посмотреть, что произойдет.
Если вам нужно проверить только соединение, вы можете использовать что-то вроде http://php.net/manual/en/function.fsockopen.php также
В принципе, вы должны использовать такие функции, как ssh2_auth_password или ssh2_auth_public_key_file, и комбинировать с функцией ssh2_connect, чтобы проверить, проверено ли соединение или нет.
$connection = ssh2_connect("myserver.com", 22); if(ssh2_auth_password($connection, "username", "password")){ echo "connection is authenticated"; } else{ echo "failed!" }
Надеюсь это поможет!
Похоже, что 4-й параметр $callbacks
может дать некоторую обратную связь по этой проблеме.
Вероятно, проблема связана с невозможностью подключения (Duh). Это может быть связано с тем, что брандмауэр, без Интернета, тяжелая защита SSH. Попробуйте вызвать # ssh -v <host>
на поле PHP, чтобы узнать, в чем проблема.
Еще один пример того, почему phpseclib, чистая реализация PHP SSH , лучше, чем расширение ssh2 PECL.