Проблема с русской кодировкой может быть связана с локалью под которой работает php+nginx(apache)
узнать локаль
passthru("locale");
у меня так:
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"...
в командной строке сервера выполните $ locale - для сравнения
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8" ...
Далее разбор полета на unix'ах привел к использованию такой конструкции
passthru("env LANG=en_US.UTF-8 nice 7za a -tzip -mmt4 -sccUTF-8 -scsWIN $archive_path $catalog_path");
где env - определяет язык (локаль) окружения под которым нужно выполнить команду
nice - выполнение с пониженным приоритетом, чтоб не вешать все
7za - встроенный навороченный архиватор чьих способностей хватает для решения задачи
далее в мануалах по 7za (7zip) но смысл что из utf8 для windows сохдаем архив с именем и из файлов лежащих в определенной папке.
У меня получилось. Удачи. Годы идут, проблема встречается. Спасибо коллегам за участие в решении задачи.