Загрузка файла в API через cURL PHP

Я пытался загрузить файл в удаленный API через CURL в течение последних нескольких дней без особой удачи. Код отлично работает в Windows, и я получаю желаемый результат, возвращаемый обратно из API.

Моя проблема в том, что как только я перехожу в среду Linux и загружаю файл через CURL, я получаю сообщение об ошибке ниже.

Что я пробовал: Я подумал, что, возможно, причиной моей проблемы были разрешения и подобные, поскольку он говорил, что не может найти файл, поэтому я решил немного изменить свой код, чтобы загрузить на сервер, переместить его в папку для загрузки, а затем выбрать этот файл для отправки через curlfile, но все равно не повезло. Вот ошибка, которую я получаю:

"errors": [
    {
      "developerMessage": "Error while manipulating file /home/USER/public_html/top/tmp/client17.jpg due to a File system / Amazon S3 issue /usr/share/tomcat7/.fineract/top/documents/clients/1/8q9sr/home/USER/public_html/top/tmp/client17.jpg (No such file or directory)",
      "defaultUserMessage": "Error while manipulating file /home/USER/public_html/top/tmp/client17.jpg due to a File system / Amazon S3 issue /usr/share/tomcat7/.fineract/top/documents/clients/1/8q9sr/home/USER/public_html/top/tmp/client17.jpg (No such file or directory)",
      "userMessageGlobalisationCode": "error.msg.document.save",
      "parameterName": "id",
      "value": null,
      "args": [
        {
          "value": "/home/USER/public_html/top/tmp/client17.jpg"
        },
        {
          "value": "/usr/share/tomcat7/.fineract/top/documents/clients/1/8q9sr/home/USER/public_html/top/tmp/client17.jpg (No such file or directory)"
        }
      ]
    }
  ]

Вот код, который я использую:

// UPLOAD NEW FILES
if (ISSET($_FILES))
{

    $uploads = array('guarantor_id_card', 'guarantor_payslip_1', 'guarantor_payslip_2', 'guarantor_payslip_3', 'guarantor_bank_1', 'guarantor_bank_2','guarantor_bank_3' );
    $postFields = array();

    // for creating documents

    foreach($uploads as $k => $v)
    {

        // GET  UPLOAD NAME FROM ARRAY 
        $upload_name = $v;

        if (empty($_FILES[$upload_name]['error']))
        {

            $uploaddir = getcwd() . "/tmp/";
            $uploadfile = $uploaddir . basename($_FILES[$upload_name]['name']);

            if (move_uploaded_file($_FILES[$upload_name]['tmp_name'], $uploadfile)) {
              echo "File is valid, and was successfully uploaded.\n";
            } else {
               echo "Upload failed";
            }           


            //files
            $postFields['file'] = new CURLFile($uploadfile);

            //metaData USING COUNTER AND UPLOAD NAME DYNAMIC
            $postFields['fileName'] = $_FILES[$upload_name]['name'];
            $postFields['type'] = $_FILES[$upload_name]['type'];
            $postFields['name'] = 'Supporting Docs';
            $postFields['description'] = $_FILES[$upload_name]['name'];

            // initialise the curl request
            $request = curl_init("https://APIURL_HERE");

            // send a file
            curl_setopt($request, CURLOPT_POST, true);
            curl_setopt($request, CURLOPT_USERPWD, $user . ":" . $password);
            curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
            curl_setopt($request, CURLOPT_PORT, 8443);
            curl_setopt($request, CURLOPT_SAFE_UPLOAD, TRUE);
            curl_setopt($request, CURLOPT_POSTFIELDS, $postFields);

            // output the response
            curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($request, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($request, CURLOPT_SSL_VERIFYPEER, 0);
            $send_request = curl_exec($request);

            // close the session
            curl_close($request);
            echo $send_request;

        } 

    }

    echo '<pre>';
    echo 'Here is some more debugging info:';
    print_r($_FILES);
    print_r(getcwd());
    echo '<br>';
    print_r($uploadfile);
    print "</pre>";

}

У меня нет идей, если у кого-то есть опыт в этом, пожалуйста, помогите!

Спасибо.

"/home/USER/public_html/top/tmp/client17.jpg из-за проблемы с файловой системой / Amazon S3 /usr/share/tomcat7/.fineract/top/documents/clients/1/8q9sr/h‌ ome / USER / public_html‌ / top / tmp / "Эта папка существует и есть ли у вас разрешение на доступ к ней? А почему в ошибке написано «Amazon S3»? Это крепление S3?

DannyZB 18.04.2018 12:28

Никакого доступа к нему вообще нет, это на стороне API. Забавно то, что окна вообще не выдают эту ошибку

Enoch 18.04.2018 12:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
108
0

Другие вопросы по теме