Почему in2csv не конвертирует мой XLSX-файл с заголовком листа, отличным от ascii? [CentOS x64] - PullRequest
0 голосов
/ 18 февраля 2020

Моя проблема в том, что у меня есть файл Excel XLSX с именем листа, отличным от ascii (Общий отчет), и я пытаюсь преобразовать его в CSV с помощью инструмента in2csv. Я запускаю его с PHP, используя функцию exec.

На моей локальной машине (Windows 10 x64) все работает нормально. Я пытаюсь запустить его на CsntOS x64 VDS, и когда я запускаю свой скрипт PHP (который использует exec для вызова инструмента in2csv) из терминала - он тоже работает нормально. Но когда я запускаю его из cron (php -f ./task.php) - он не выдает ошибку, но полученный CSV-файл пуст!

Я провел несколько тестов, проверил пользователя и группу, выполняющую сценарий PHP, python по умолчанию кодирование, но до сих пор понятия не имею. Пожалуйста, помогите!

Вот команда для преобразования файла:

in2csv --locale ru_RU --sheet "Общий отчет" --encoding windows-1251 "prices.xlsx" > "prices.csv"

1 Ответ

0 голосов
/ 19 февраля 2020

Наконец я понял это.

Команда в PHP функции exec должна выглядеть так:

exec('/usr/bin/in2csv --locale ru_RU --sheet "Общий отчет" --encoding windows-1251 "/home/admin/www/html/prices.xlsx" > "/home/admin/www/html/prices.csv"');

И команда cron должна выглядеть так:

/usr/bin/php -f /home/admin/www/html/task.php

То есть вам нужно указать полный путь ко всем исполняемым файлам, и это будет работать как в терминале, так и в Cron!

...