На сервер приходит пустой массив с файлом, если название файла содержит русские буквы, в пути к файлу указанному в CURLFile объекте?

Проблема, описанная в вашем вопросе, связана с передачей файлов на сервер с использованием CURL и обработкой файлов в PHP, когда названия файлов содержат русские буквы. Для решения данной проблемы, вам потребуется изменить код на стороне клиента (отправителя) и сервера (получателя).

На стороне клиента:
1. Проверьте, что кодировка для названия файла русскими буквами - UTF-8. Если названия файлов не в кодировке UTF-8, преобразуйте их в эту кодировку.

2. Создайте объект CURLFile с правильным путем к файлу и передайте его в запросе CURL с помощью опции CURLOPT_POSTFIELDS. Обратите внимание, что путь в CURLFile должен быть абсолютным, а не относительным.

3. Добавьте заголовки запроса, чтобы указать серверу кодировку названия файла. Вместо использования заголовка Content-Type, который указывает на тип содержимого передаваемого файла, используйте заголовок Content-Disposition с параметром filename* в формате UTF-8. Например:

   $filename = 'название_файла.txt';
   $headerValue = 'attachment; filename*=UTF-8'''.rawurlencode($filename);
   curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Disposition: '.$headerValue]);

На стороне сервера:
1. Убедитесь, что ваш веб-сервер настроен для корректной работы с русскими символами в путях к файлам. Для сервера Apache можно использовать директиву AddDefaultCharset UTF-8 в файле .htaccess или настройке виртуального хоста.

2. В PHP вы можете получить файл, отправленный с помощью CURL, используя глобальный массив $_FILES. Доступ к файлу будет осуществляться через ключ, указанный в параметре name CURLFile. Например, если в запросе передается файл с ключом 'file', то вы можете получить доступ к нему следующим образом:

   $uploadedFile = $_FILES['file'];

3. Проверьте, что название файла правильно передается и сохраняется на сервере. Вы можете использовать функцию move_uploaded_file для перемещения файла в желаемую директорию и проверки его названия. Например:

   $filename = $uploadedFile['name'];
   $tmpFilePath = $uploadedFile['tmp_name'];
   $targetPath = '/path/to/save/uploads/'.$filename;
   move_uploaded_file($tmpFilePath, $targetPath);

   if ($filename != pathinfo($targetPath, PATHINFO_BASENAME)) {
       // Название файла содержит неправильные символы
   }

Это основные шаги, которые вам потребуется выполнить на стороне клиента и сервера для передачи файлов с русскими названиями через CURL и их обработки в PHP. Обратите внимание, что вы также должны учитывать все известные ограничения и ограничения на сервере и в конкретной ситуации, чтобы обеспечить безопасность и правильную работу вашего приложения.