[英]Connect an active directory or LDAP with PHP
我試圖將窗口的活動目錄或LDAP與PHP中創建的應用程序( GLPI )連接。
連接參數:
與服務器連接:
$ds = ldap_connect($host, $port) // return true
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
與服務器,用戶和密碼相關的連接
ldap_bind ($ds, $ login, $ password)
返回我:
“無法聯系LDAP服務器”
我想知道該錯誤消息會發生什么,因為在第一種方法中它對我返回true,這意味着如果它連接到服務器。
RootDN
很好,並且具有我正在使用的用戶的所有權限。
默認服務器很好,我執行ping
和telnet
。
注意:我已經下載了LDAPExplorer並成功建立了連接。
是否缺少: $ds = ldap_connect ...
像您的代碼中那樣?
應該是這樣的:
$ds = ldap_connect($host, $port);
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
ldap_bind ($ds, $login, $password)
docs中明確指出, ldap_connect
無法連接到服務器。 它僅創建資源並檢查給定的值是否合理。 實際連接是通過需要連接到服務器的第一個命令建立的。 在這種情況下, ldap_bind
。
順便說一句:“第一個方法”不會返回true
而是一個資源句柄。 只有當您傳遞絕對不可解析的內容時,它才會返回false
。 但從來都不是 true
我建議使用LDAP-URI而不是$host, $port
變體,因為PHP庫必須在內部進行此操作。 這是建立LDAPS連接的唯一方法。
好的,解決我的問題的方法是從GLPI版本9.3.0升級到9.3.3。
建議:
對於用戶,這可能會發生什么,請驗證GLPI告知有關掛起的安裝軟件包的消息。 因此,我選擇了更新,並且連接正常進行。
對於無法更新版本的用戶,請在安裝程序的安裝過程中驗證apache軟件包是否正在等待安裝或更新,請非常小心地安裝似乎未決的整個列表。
要通過安裝版本9.3.3修復一些錯誤,請執行以下操作:
chown -R apache: apache glpi / files
chmod -R 755 glpi / files
chown -R apache: apache config
chmod -R 755 glpi / config
也:
setsebool -P httpd_can_network_connect_db 1
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.