Этот код использовался в течение нескольких лет для отправки файла с Сервера A на Сервер B и Сервер C без проблем. Но с недели a go по неизвестной причине я получаю $ _FILES пустым только при отправке с Сервера A на Сервер B:
Например:
Отправка файла с Сервера A на Сервер B: Массив $ _FILES на сервере B пуст, файл не получен. Нет ошибок в CURL и нет ошибок на сервере B, $ _FILES установлен, но пуст.
Отправка файла с сервера A на сервер C: $ _FILES включает в себя один файл, и файл успешно доставлен.
Отправка файла с сервера C на сервер B: $ _FILES включает в себя один файл, и файл успешно получен.
Отправка файла с локального сервера P C на сервер B и на сервер C: $ _FILES включает в себя один файл и файл успешно доставлен.
Таким образом, проблема возникает только при отправке с сервера A на сервер B (как уже упоминалось, это работало). В логах брандмауэра нет ничего необычного.
Поиграл с параметрами заголовка, которые не имели значения; Версия сервера A php 7.4.1;
$ch = curl_init();
$cfile = curl_file_create(realpath($zipFile),'application/zip','export.zip');
$fileArray['export']=$cfile;
$headr = array();
$headr[] = 'Content-type:multipart/form-data';
curl_setopt($ch,CURLOPT_URL, $listenerUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fileArray);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
//@@@@@@
#curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
#curl_setopt($ch, CURLOPT_HEADER, TRUE);
//@@@@@@@
$result = curl_exec($ch);