跳到主要內容

CentOS 7 + PHP 7 使用AD驗證

login.php 內容
  $domain = "example.com.tw";   // 網域名稱
  $ldap_server = "example01";     // AD SERVER 名稱
  $connect_ad = ldap_connect($ldap_server) or die ("無法連線AD SERVER");
  ldap_set_option($connect_ad, LDAP_OPT_PROTOCOL_VERSION, 3);
  ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
  $ldapbind = @ldap_bind($connect_ad, "user01@".$domain, "userPassword");
  if ($ldapbind) {
    echo "驗證成功,已登入";
  } else {
    echo "驗證失敗。";
  }
?>

於WEB SERVER執行時,永遠為顯示"驗證失敗";
但是,以指令執行
[user01@example.com.tw html]$php login.php
其結果為"驗證成功,已登入"。
stackOverflow網站上有一篇回答
SELinux doesn't allow your httpd daemon to talk to the LDAP server on the same machine.
所以,我們要變更一下系統設定。
檢查httpd使用配置
getsebool -a | grep httpd

httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off

我們必需將httpd_can_network_connect致能。
setsebool -P httpd_can_network_connect on

如此,網頁就能正常執行了。

留言

這個網誌中的熱門文章

Colorbox 使用筆記

Colorbox 詳細使用說明請參考 a jQuery lightbox 情境一: 當開發RWD網頁時,我想將 lightbox 的寬度依顯示螢幕的寬度來決定。 想讓 lightbox 的內容不會太擁擠或太空洞。 <script> var deviceWidth = 0; $(function() { deviceWidth = $(window).width(); $(window).resize(function(){ deviceWidth = $(window).width(); }); }); function showMessage() { var colorboxWidth = "100%"; if (deviceWidth > 767) { colorboxWidth = "70%"; } $.colorbox({innerWidth: colorbox}); } </script> 情境二: 為了讓使用者確實閱讀完 lightbox 內的訊息,想將關閉 lightbox 的熱鍵移除。 <script> function showMessage() { $.colorbox({ escKey: false,  // 按下esc鍵關閉 Colorbox 視窗 arrowKey: false,  // 按下方向鍵關閉 Colorbox 視窗 overlayClose: false  // 在背景遮罩點一下滑鼠左鍵,關閉 Colorbox 視窗 }); } </script> 情境三: 當 Lightbox 內的訊息太長,或需要互動性質的內容,開啓 iframe 功能,互動換頁才不會讓整個網頁換掉。 <script> function showMessage() { $.colorbox({ escKey: false, arrowKey: false, o...

動態變更事件函數

因為供應型態的變更,會影響查詢選單的內容。為使用者方便,我們會使用到動態變更的方法來達成。 HTML 採購(INPUT TYPE='radio' id='purchase' name='purchase' value='0' onclick='change_menu(this)' checked) 製程(INPUT TYPE='radio' id='workcenter' name='purchase' onclick='change_menu(this)' value='1') 提供單位:(INPUT TYPE='text' id='supply_id' style='width:90px' ondblclick='search_supply(this)') Javascript function change_menu(topost) {   if (topost.id == 'purchase') {     node('supply_id').ondblclick = new Function("search_supply(this)");   } else {     node('supply_id').ondblclick = new Function("menu_terms(this, '1')");   } } 如果變更的Function 不需要參數,則直接填入Function 名稱即可。如: function change_menu(topost) {   if (topost.id == 'purchase') {     node('supply_id').ondblclick = search_supply;   } else {     node('supply_id').ondblclic...

讀取陣列

循環讀取陣列的指令 foreach ($array as $value) { echo $value; } //----------------------------- foreach ($array as $key => $value) { echo $array[$key] = $value . '...'; } ※參考文獻- http://dettori.pixnet.net/blog/post/5256403