1
這是我的代碼,它工作正常。PHP ldap_bind「exception」
$authenticated = ldap_bind($conn, $this->username . "@" . $servidor_dominio, $this->password);
該函數的描述指定它返回bool。當用戶輸入用戶名和密碼不正確的組合,我從服務器得到一個錯誤:
Error 500. ldap_bind(): Unable to bind to server: Invalid credentials
這確實是一個PHP的警告,但是它停止我的應用程序的執行。它甚至顯示了堆棧跟蹤頁面(我正在使用Yii PHP框架)。
我試圖捕捉例外把的ldap_bind()調用一個try/catch塊:
try {
$authenticated = ldap_bind($conn, $this->username . "@" . $servidor_dominio, $this->password);
} catch (Exception $exc) {
echo $exc->getTraceAsString();
}
它沒有捕獲任何異常,我仍然得到同樣的錯誤:
Error 500 ldap_bind(): Unable to bind to server: Invalid credentials
有人可以幫助我嗎?似乎我的用戶錯過了經常輸入其登錄憑據的類型;-)
完美!!!它解決了它。你能解釋我這種行爲嗎?就我所知,「@」用於將參數傳遞給變量。我是對的? –
PHP中的@符號簡單地抑制了該命令返回的任何錯誤消息。由於ldap_bind在不成功時返回false,因此除非您正在對其無法綁定的原因進行疑難解答,否則您確實不需要錯誤消息。 –
簡單地抑制錯誤將解決眼前的問題,但不是根本原因。這很可能會在未來很難找到錯誤。 –