无法捕获 Ldap_add 异常
Can't catch Ldap_add exception
我是第一次使用 LDAP,还有 PHP / symfony:我成功连接到 LDAP 服务器,可以搜索和添加 users/groups,没什么大问题。
但是,当我尝试添加一个已经存在的用户时,我收到以下警告:
HTTP 500 Internal Server Error
Warning: ldap_add(): Add: Already exists
我想抓住它,因为它会抛出异常,并且可以为用户用一个简单的吐司“失败:CN 已在使用中”来代替。
但是,我找不到这样做的方法,也不明白为什么 symfony 会在 ldap_add 失败时只 return "false" 引发这样的异常。 (确实 return 成功时为真):ldap_add manual
编辑:这是相关代码。选项没问题,新建用户时请求成功
我尝试了几种方法来捕获错误,但似乎无法捕获警告
try {
$result = ldap_add($ldapconn, $userdn, $user);
} catch(Throwable $e) {
echo $e->getMessage();
}
默认情况下 Symfony 将警告转换为异常...仅在开发环境中
这是一个聪明的选择,可以避免您的生产在生产中发生意外行为时爆炸。
如果出现错误,ldap_add 函数将 return 为假。那是你应该检查的。您可能想完全关闭警告,您可以使用 @ldap_add
代替。
也就是说,这里有 2 个备选方案。
- 您可能需要使用 PHP 安全库,它将警告转换为异常。这是一个例子:https://github.com/thecodingmachine/safe
- 你也可以临时设置你自己的错误侦听器,它会抛出异常,实际上有时 Symfony 会在它自己的代码库中这样做。这里有一个例子:https://github.com/symfony/symfony/blob/27d84dbe57ce65203b26232b87e6660fdba2f30e/src/Symfony/Component/String/AbstractString.php#L509最重要的是不要避免恢复原来的错误处理程序。
希望对您有所帮助!
我是第一次使用 LDAP,还有 PHP / symfony:我成功连接到 LDAP 服务器,可以搜索和添加 users/groups,没什么大问题。 但是,当我尝试添加一个已经存在的用户时,我收到以下警告:
HTTP 500 Internal Server Error
Warning: ldap_add(): Add: Already exists
我想抓住它,因为它会抛出异常,并且可以为用户用一个简单的吐司“失败:CN 已在使用中”来代替。
但是,我找不到这样做的方法,也不明白为什么 symfony 会在 ldap_add 失败时只 return "false" 引发这样的异常。 (确实 return 成功时为真):ldap_add manual
编辑:这是相关代码。选项没问题,新建用户时请求成功
我尝试了几种方法来捕获错误,但似乎无法捕获警告
try {
$result = ldap_add($ldapconn, $userdn, $user);
} catch(Throwable $e) {
echo $e->getMessage();
}
默认情况下 Symfony 将警告转换为异常...仅在开发环境中
这是一个聪明的选择,可以避免您的生产在生产中发生意外行为时爆炸。
如果出现错误,ldap_add 函数将 return 为假。那是你应该检查的。您可能想完全关闭警告,您可以使用 @ldap_add
代替。
也就是说,这里有 2 个备选方案。
- 您可能需要使用 PHP 安全库,它将警告转换为异常。这是一个例子:https://github.com/thecodingmachine/safe
- 你也可以临时设置你自己的错误侦听器,它会抛出异常,实际上有时 Symfony 会在它自己的代码库中这样做。这里有一个例子:https://github.com/symfony/symfony/blob/27d84dbe57ce65203b26232b87e6660fdba2f30e/src/Symfony/Component/String/AbstractString.php#L509最重要的是不要避免恢复原来的错误处理程序。
希望对您有所帮助!