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

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
nixman
проходил мимо
Сообщения: 1
Зарегистрирован: 2014-11-13 16:56:35

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

Непрочитанное сообщение nixman » 2014-11-14 9:33:09

Добрый день.
Возникла странная проблема - на свежеустановленном 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


В чем может быть проблема?
Заранее благодарен за помощь.

argo-uln@yandex.ru
проходил мимо

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

Непрочитанное сообщение argo-uln@yandex.ru » 2014-12-18 14:03:29

В файле /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 и Вам советую! Удобней, глюков меньше и все отображает....

Гость2
проходил мимо

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

Непрочитанное сообщение Гость2 » 2015-08-11 14:49:33

Не надо откатывать патч! (тем более, что для php>5.5 без него и не будет работать)
Две строки вида:

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

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

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

allexnew
проходил мимо
Сообщения: 3
Зарегистрирован: 2009-02-24 0:44:52

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

Непрочитанное сообщение allexnew » 2017-11-21 19:31:44

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

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

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

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



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


Вернуться в «Софт»

Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot[Bot] и 7 гостей