Alter.Org.UA
 << Back Home EN en   Donate Donate

PECL DBASE type 'I' filed support

by Alter (alterX@alter.org.ua (remove X))

Пользовался модулем dbase v5.1.0 (pecl_dbase) для PHP. Столкнулся тем, что некоторые .DBF файлы не открываются (экспорт клиент-банка Конкорд).

PHP Warning:  dbase_open(): unable to open database xxx.dbf in /var/tmp

Google вывалил кучу репортов "да, есть проблема" и ничего дельного по сути проблемы. Оказалось, в .DBF'е для некоторых полей использовалось двоичное представление целых чисел (тип 'I'). Обычно же используется тип 'N' и число представлено в виде строки. Пришлось дописать поддержку и добавить дополнительное сообщение о неподдерживаемом типе поля. При обновлении системы оказалось, что в более новом pecl_dbase v5.1.1 проблема сохранилась, но патч требуется немного другой.

Патчи отправлены в команду разработки dbase-pecl-php7 issues 5

pecl_dbase 7
dbase3-Itype.7.2019.03.14.gz
2019.03.14

pecl_dbase 5.1.1
dbase3-Itype.5.1.20180208.tgz
2018.02.08

pecl_dbase 5.1.0
dbase3-Itype.20160704.tgz
2016.07.04

Linux (gentoo)

# ebuild /usr/portage/dev-php/pecl-dbase/pecl-dbase-5.1.1.ebuild unpack
# cd /var/tmp/portage/dev-php/pecl-dbase-5.1.1/work/php-5.6
# patch < ~/dbase3-Itype.5.1.patch
# cd /var/tmp/portage/dev-php/pecl-dbase-5.1.1/work/dbase-5.1.1
# patch < ~/dbase3-Itype.5.1.patch
# ebuild /usr/portage/dev-php/pecl-dbase/pecl-dbase-5.1.1.ebuild compile
# ebuild /usr/portage/dev-php/pecl-dbase/pecl-dbase-5.1.1.ebuild install

Пути и версии могут отличаться. После успешной сборки следует убедиться, что

/var/tmp/portage/dev-php/pecl-dbase-5.1.1/work/php-5.6/.libs/dbase.so 

свежесобраный и скопирован в правильный подкаталог внутри

/usr/lib/php5.6/lib/extensions/....

См. также


FB or mail alterX@alter.org.ua (remove X)   Share
Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2024