在 Windows 環境安裝 OpenLDAP 2.2.29 後,使用 PHP 測試連線時遇到 ldap_bind(): Unable to bind to server: Protocol error。經查證為 OpenLDAP 2.x 預設不支援 LDAPv2 協定,需在 slapd.conf 加入 allow bind_v2 才能相容舊版用戶端。本文記錄完整安裝設定與除錯過程。
openldap-2.2.29 安裝檔,一路「下一步」完成安裝。slapd.conf,在 include ./schema/core.schema 後加入:include ./schema/cosine.schema
include ./schema/inetorgperson.schema
include ./schema/nis.schema
include ./schema/misc.schema
<?php
$ldap_host = "ldap://127.0.0.1";
$ldap_port = 389;
$ldap_conn = ldap_connect($ldap_host, $ldap_port) or die("Can not connect LDAP server.");
$rootdn = 'cn=Manager,dc=my-domain,dc=com';
$rootpw = 'secret';
ldap_bind($ldap_conn, $rootdn, $rootpw);
var_dump($ldap_conn);
?>
執行後出現:Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Protocol error。根據 OpenLDAP 官方文件,2.x 版預設停用 LDAPv2,需在 slapd.conf 末尾加入:
allow bind_v2
重啟「OpenLDAP Directory Service」服務後,PHP 測試即可正常綁定並回傳 resource 物件。
說明:OpenLDAP 2.x 允許接受 LDAPv2 Bind 請求,但要求用戶端使用受限的非標準 LDAPv3 變體。啟用 allow bind_v2 即可相容舊版 PHP LDAP 擴充套件。
Win10 常用快捷鍵大全:虛擬桌面、視窗貼靠、任務檢視一鍵搞定
Win7 登入畫面鍵盤失效無法輸入密碼?螢幕鍵盤 + 登錄修復雙管齊下
Win8應用商店打不開?重命名SoftwareDistribution資料夾與修改DNS雙管齊下
重裝系統後 WinXP 檔案無法存取/拒絕存取:取得所有權與權限設定完整解決
Win10 9926 更新後極路由無法連接硬碟:SMB 1.0/不安全來賓存取 登錄修復法
Win7 核心服務 RPC(Remote Procedure Call)能否關閉?深度解析與嚴厲警示
Windows 7 「電腦」右鍵「管理」打不開/程式未關聯錯誤修復:登錄補回 IsShortcut 鍵值或修正 CompMgmtLauncher.exe 呼叫路徑