簡體   English   中英

使用PHP連接活動目錄或LDAP

[英]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很好,並且具有我正在使用的用戶的所有權限。

默認服務器很好,我執行pingtelnet

注意:我已經下載了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM