Roundcube в chroot окружении.

% uname -or
FreeBSD 10.3-RELEASE-p11

При обновлении Roundcube до 1.2.5 столкнулся с тем, что в chroot фунциия php idn_to_ascii() возвращает пустую строку, т.е.

% php -r '$imap_host="10.0.1.10"; echo "Before: $imap_host After: ".idn_to_ascii($imap_host)."\n";'

вернет:

Before: 10.0.1.10 After: 

Однако, если тот же самый скрипт запустить вне chroot окружения, то ошибки не будет. Схожая проблема была описана как баг php https://bugs.php.net/bug.php?id=74276 , но это не так.Всё становится понятно, если выполнить

% truss php -r '$imap_host="10.0.1.10"; echo "Before: $imap_host After: ".idn_to_ascii($imap_host)."\n";'
...

fstat(2,{ mode=crw------- ,inode=259,size=0,blksize=4096 }) = 0 (0x0)
lseek(2,0x0,SEEK_CUR)                            = 217797 (0x352c5)
stat("/usr/local/share/icu/58.2/icudt58l/rfc3491.spp",0x7fffffffcd20) ERR#2 'No such file or directory'
stat("/usr/local/share/icu/58.2/icudt58l.dat",{ mode=-rwxr-xr-x ,inode=1148643,size=26213232,blksize=131072 }) = 0 (0x0)
openat(AT_FDCWD,"/usr/local/share/icu/58.2/icudt58l.dat",O_RDONLY,00) = 3 (0x3)
mmap(0x0,26213232,PROT_READ,MAP_SHARED,3,0x0)    = 34596716544 (0x80e200000)
close(3)                                         = 0 (0x0)
Before: 10.0.1.10 After: 10.0.1.10
write(1,"Before: 10.0.1.10 After: 10.0.1."...,35) = 35 (0x23)
close(2)                                         = 0 (0x0)
close(1)

...

Очевидно, что необходимо скопировать недостающий файл в chroot или

$ sudo pkg -r /sites/mail.example.com install -y icu
This entry was posted in FreeBSD, Mail and tagged . Bookmark the permalink.

Leave a Reply