gpt4 book ai didi

php - 根据错误的凭证处理 'ssh2_auth_password()'错误

转载 作者:行者123 更新时间:2023-12-02 14:14:56 24 4
gpt4 key购买 nike

我有点在处理ssh2_auth_password()函数(以及ssh2_connect())的错误。我成功管理了连接并登录到我的远程服务器,但是,当提供错误的凭据时,我希望能够处理这些情况。我正在使用ZF 1.12,并且已经创建了一个小 Controller 插件:

<?php
class My_Controller_Plugin_Scp extends Zend_Controller_Plugin_Abstract
{
private $host;
private $login;
private $password;
private $destDir = '.';
private $connexion;

public function __construct()
{
$co = ssh2_connect($this->getHost(), 22);
if(false === $co)
throw new Exception('Can\'t connect to remote server');

$this->setConnexion($co);
}

/**
* @return bool
* @throws Exception
*/
public function auth()
{
$auth = ssh2_auth_password($this->getConnexion(), $this->getLogin(), $this->getPassword());

if($auth === false)
throw new Exception('Authentication failed!');

return $auth;
}

我在 Controller 中使用此插件,如下所示:
    try {
// Préparation à la copie en SSH du fichier template
$scp = new My_Controller_Plugin_Scp();
$scp->auth(); // Authentification
} catch(Exception $e) {
echo $e->getMessage();
$this->getHelper('Redirector')->setGotoRoute(array(), 'ficheVoir');
exit();
}

实际的输出是,当我弄乱凭据时,会引发PHP警告,而我希望能够显示自定义错误消息。
Exception和其他东西我做错了吗?

最佳答案

我无法测试您的代码,因为缺少很多东西。
我根据您的代码编写了一个简单的connect函数:

<?php

function connect() {
$host = '';
$login = '';
$password = '';
$co = ssh2_connect($host, 22);
if (false === $co)
throw new Exception('Can\'t connect to remote server');
$result = @ssh2_auth_password($co, $login, $password);
var_dump($result);
if ($result === false) {
throw new Exception('Authentication failed!');
}
echo 'Connection estabilished';
}

try {
connect();
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}

我禁止使用 @发出PHP警告,不要抛出难看的PHP错误消息。如果 $resultfalse,则会引发 Exception并对其进行正确处理。基本上,解决方案是在 @函数之前添加 ssh2_auth_password()

关于php - 根据错误的凭证处理 'ssh2_auth_password()'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24882368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com