Страница 1 из 1

phpldapadmin не отображает кириллицу в поле cn

Добавлено: 2014-11-14 9:33:09
nixman
Добрый день.
Возникла странная проблема - на свежеустановленном Ubuntu Server 14.04 был установлен openLDAP:
sudo apt-get install slapd ldap-utils

настроен пакет slapd:
sudo dpkg-reconfigure slapd

Также, был установлен phpldapadmin (версия 1.2.2):
sudo apt-get install phpldapadmin

Из настроек phpldapadmin были сделаны следующие:
в файле /etc/phpldapadmin/config.php
$servers->setValue('server','base',array('dc=poltava,dc=local'));
$servers->setValue('login','bind_id','cn=admin,dc=poltava,dc=local');

После перезапуска Apache, phpldapadmin нормально работает в браузере, была создана адресная книга, однако, замечен был следующий глюк: cn в списке контактов в левой колонке и в заголовке вверху не отображается.
Снимок1.png
Попытка переименовать запись также ни к чему не приводит: поле cn отображается нечитаемо и сохраняет только латиницу.
Снимок2.png
В логе Апача (error.log) при переименовании записи валится следующее:

Код: Выделить всё

[Thu Nov 13 16:12:48.695231 2014] [:error] [pid 4998] [client 192.168.0.170:49800] PHP Fatal error:  Call to a member function getEntry() on a non-object in /usr/share/phpldapadmin/lib/TemplateRender.php on line 939, referer: http://192.168.0.173/phpldapadmin/cmd.php?cmd=template_engine&server_id=1&dn=cn%3D%D0%A2%D0%B5%D1%81%D1%82%2Cou%3Daddressbook%2Cdc%3Dpoltava%2Cdc%3Dlocal&template=none&redirect=true
[Thu Nov 13 16:12:53.255453 2014] [:error] [pid 4999] [client 192.168.0.170:49801] PHP Fatal error:  Call to a member function getEntry() on a non-object in /usr/share/phpldapadmin/lib/TemplateRender.php on line 939, referer: http://192.168.0.173/phpldapadmin/cmd.php?cmd=template_engine&server_id=1&dn=cn%3D%D0%A2%D0%B5%D1%81%D1%82%2Cou%3Daddressbook%2Cdc%3Dpoltava%2Cdc%3Dlocal&template=none&redirect=true
В чем может быть проблема?
Заранее благодарен за помощь.

Re: phpldapadmin не отображает кириллицу в поле cn

Добавлено: 2014-12-18 14:03:29
argo-uln@yandex.ru
В файле /usr/local/www/phpldapadmin/lib/function.php
откатить назад патч
Разбираться лень, но если вернуть, как было все работает.

Fixed two issues to get phpLdapAdmin to work under PHP 5.5.x

Fixed the preg_replace to preg_replace_callback to use the /e/ functionality in the officially endorsed fashion




@@ -2564,13 +2564,24 @@
if (is_array($dn)) {
$a = array();

- foreach ($dn as $key => $rdn)
- $a[$key] = preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$rdn);
+ foreach ($dn as $key => $rdn) {
+ $a[$key] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/',
+ function ($m) {
+ return ''.chr(hexdec('\\1')).'';
+ },
+ $rdn
+ );
+ }

return $a;

} else {
- return preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$dn);
+ return preg_replace_callback('/\\\([0-9A-Fa-f]{2})/',
+ function ($m) {
+ return ''.chr(hexdec('\\1')).'';
+ },
+ $dn
+ );
}
}

phpldapadmin не отображает кириллицу в поле cn

Добавлено: 2015-04-21 12:46:16
Гость
Перешел на ldap-account-manager и Вам советую! Удобней, глюков меньше и все отображает....

phpldapadmin не отображает кириллицу в поле cn

Добавлено: 2015-08-11 14:49:33
Гость2
Не надо откатывать патч! (тем более, что для php>5.5 без него и не будет работать)
Две строки вида:

return ''.chr(hexdec('\\1')).'';

нужно заменить на:

return ''.chr(hexdec($m[1])).'';

phpldapadmin не отображает кириллицу в поле cn

Добавлено: 2017-11-21 19:31:44
allexnew
Гость2 писал(а):Не надо откатывать патч! (тем более, что для php>5.5 без него и не будет работать)
Две строки вида:

return ''.chr(hexdec('\\1')).'';

нужно заменить на:

return ''.chr(hexdec($m[1])).'';

Слушай, огромное спасибо!
Кстати в Яндекс браузере вместо "ничего не отображается", отображаются квадратики. А вот в Mozilla, да, ничего не отображается.