Задать вопрос
@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"


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

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

Похожие вопросы