% 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