Почему try-catch не работает с библиотекой phpseclib в laravel 5.5?

Я работаю над одним проектом, который требует от меня выполнения некоторых команд на удаленном сервере. Я использую Laravel 5.5 с именем пакета «laravelcollective / remote», который использует SSH2 для подключения к удаленному серверу.

Однако я сталкиваюсь с некоторыми действительно странными проблемами с некоторыми серверами. На некоторых серверах появляется следующее сообщение об ошибке.

production.ERROR: Connection closed prematurely {"exception":"[object] (ErrorException(code: 0): Connection closed prematurely at /home/username/application_name/public_html/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php:3821, RuntimeException(code: 0): Unable to connect to remote server. at /home/username/application_name/public_html/vendor/laravelcollective/remote/src/Connection.php:143)

Я использую блок try-catch для перехвата исключений, но я не могу перехватить это исключение. Все остальные исключения, такие как connection timed out, перехватываются блоком try-catch, кроме этого.

Я использую такой блок try catch:

try {
    $commands = array('sudo apt-get update','sudo apt-get upgrade -y');
    SSH::run($commands);
} catch (\Exception $e){
    report($e);
}

Но блок try-catch перестает работать с этой ошибкой connection closed prematurely. Я не знаю, упустил ли я что-то или в библиотеке есть ошибка, сталкивался ли кто-нибудь раньше с такой же проблемой? Как правильно отловить эту ошибку?

0
0
446
1

Ответы 1

это потому, что не генерируется исключение, а просто ошибка. и ошибку не поймаешь.

Я предлагаю вам установить глобальный обработчик ошибок, который преобразует все ошибки в исключения, как показано в этот ответ здесь, и было бы неплохо прочитать и другие ответы на этот вопрос.

Создайте собственный обработчик исключений, а затем в провайдере или в вашем public / index.php установите свой обработчик ошибок

Другие вопросы по теме