@edlirius
Инженер телекоммуникационной компании

PHP ругается на ошибку в Curl, куда копать?

Здравствуйте, есть скрипт на PHP который должен выгружать файл с HTML страницы в PHP и отрправлять его в API с помощью Curl, сам запрос составил но PHP ругается и никак не пойму почему...
<?php
        if(isset($_FILES) && $_FILES['sw']['error'] == 0) { // проверка что был загружен файл 
            $destiation_dir = dirname(__FILE__) .'/'.$_FILES['file']['name'];
            $url_request = "http://example.com/api/"; // URL запроса к API

            $curl = curl_init($url_request);
            curl_setopt($curl, CURLOPT_URL, $url_request);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH"); // Метод запроса PATCH
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $headers = array("Authorization: Bearer 12345"); // Токен авторизации
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $files = array('file'=> new CURLFILE($destiation_dir)); // Обозначаем файл
            curl_setopt($curl, CURLOPT_POSTFIELDS, $files); // Отправляем файл на сервер API
            $resp = curl_exec($curl);
            $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); // Получаем HTTP код
            curl_close($curl); // line 39
            var_dump($resp);

            if ($httpcode == 200) {$answer = "Ok (200)";} // Ок если код 200
            else {$answer = "Fail ($httpcode)";} // Fail если отличный от 200
        } 
?>


Пробовал использовать путь с сервера:
$w = $_SERVER['DOCUMENT_ROOT'];
$dir = ($w.'/file.bin');
и поменять заголовок:
array("Content-Type: multipart/form-data", "Authorization: ...
это не помогло

Ошибка такая:
Warning: curl_close(): supplied resource is not a valid cURL handle resource in /var/www/...load.php on line 39

Ответ сервера:
"code":404,"error":"can't open the file"


Подскажите, пожалуйста, куда копать.
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
$destiation_dir = realpath($_FILES['file']['tmp_name']);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Почитать внимательно про загрузку файлов в PHP и массив $_FILES, в частности, как он устроен и где там путь к загруженному файлу.
Ответ написан
Комментировать
@rPman
CURLFILE большими буквами? почему у тебя на это не ругается? надо CURLFile
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект