Вывод файлов из БД в файловую систему
Уважаемые господа, добрый день!
Возникла проблема с выводом файлов из БД PostgreSQL в файловую систему на боевом сервере. Есть код, который отрабатывает локально на моем компе, на котором установлен MAMP. Смысл этого кода - выбрать данные из БД поместить данные в директорию файловой системы, затем отправить эти файлы на удаленный сервер (отправляю библиотекой php cURL). На боевом серваке с другой ОС данные манипуляции не работают, работа кода останавливается на выборке файлов из БД и размещении их в файловой системе.
ОС локальной системы: MacOS 10.14.1 Версия MAMP: 4.5 Веб-сервер: Apache/2.2.34 (Unix) Версия PHP: 7.2.1
ОС боевой системы: Debian GNU/Linux 9.4 (stretch) Веб-сервер: Apache/2.4.25 (Debian) Версия PHP: 7.0.30-0+deb9u1
При выводе файлов на боевом серваке из БД возникают следующие ошибки:
Некорректно отправляется содержимое файла - файл в файловую систему приходит битый, размер файла либо нулевой, либо 1КБ.
Название файла передается неполностью, на каком-то символе режется. (ПР: «prezentatsiya_1128329_435», «prezentatsiya_1128329_л). От типа символа - число или буква не зависит. Название файлов приходит из БД уже переведенное в транслит. (Делал перевод из русской литерации в латиницу средствами PHP, но это не помогало, поэтому сделали транслитерацию в БД)
Я предположил, что какая-то проблема с локалью на Debian 9 и осуществил следующие шаги:
1. export LANGUAGE=ru_RU.UTF-8
2. export LANG=ru_RU.UTF-8
3. export LC_ALL=ru_RU.UTF-8
4. locale-gen ru_RU.UTF-8
5. apt-get install --reinstall locales
6. dpkg-reconfigure locales
Они работают на время терминальной сессии, на MacOS стоял английский язык ОС , на время терминальной сессии язык переключался на русский, но при переподключении к серверу через терминал настройки локали сбрасывались; команда dpkg-reconfigure locales не влияла на отображение интерфейса командной строки. Смена языка на MacOS на русский помогла в отображении русского языка в терминале, но не более того.
После применения данных настроек команда locale показывает следующие результаты:
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Я предполагаю, что, всё-таки дело в настройках локали, поэтому не прилагаю рабочий код, если будет необходимо, добавлю.
Искал информацию по настройке локали на Debian взял инструкцию в данном источнике, пункт Standard, выполнял следующие шаги:
1. Редактировал файл /etc/default/locale, добавив строку LANG=ru_RU.UTF-8
2. Перезагружал сервер.
3. Не помогло
4. Смотрел файл /etc/locale.gen
5. После применения команды dpkg-reconfigure locales раскомментированы следующие строки "en_US.UTF-8 UTF-8", "ru_RU.UTF-8 UTF-8"
6. Не помогло
Правил файл php.ini - увеличил размер отправляемых файлов:
upload_max_filesize = 30M
Отправка файлов разрешена, значение директивы:
file_uploads = On
Значение настройки post_max_size:
post_max_size = 8M
Подскажите, с чем может быть связана данная проблема? Где собака зарыта? Не хватает опыта, чтобы самостоятельно определить в каком направлении двигаться для решения данной задачи.