Почему не работает cURL в php

202
11 января 2020, 14:20

Код выглядит так:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "example.com");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@' . 'img/image.png'));
$result = curl_exec($ch);
echo $result;
curl_close($ch);

В чём проблема?

Answer 1

Как я понял, проблема связана с тем, что cURL не оправляет файл. Ниже, варианты ее решения.

Вариант 1

Для php >=5.6, включите поддержку префикса @ для загружаемых файлов в CURLOPT_POSTFIELDS.

Для этого нужно указать опцию CURLOPT_SAFE_UPLOAD.

Начиная с версии php 5.6, эта опция по умолчанию - TRUE (выключено):

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@' . 'img/image.png'));
Вариант 2

Для php >=5.5, 7 используйте объект CURLFile (начиная с версии php7 опция CURLOPT_SAFE_UPLOAD удалена):

$image = new CURLFile('img/image.png');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => $image);
READ ALSO
Как работать с trace.moe API через PHP?

Как работать с trace.moe API через PHP?

Есть сайт tracemoe у него есть API https://soruly

209
Laravel права и роли

Laravel права и роли

Решил попробовать пакет spatie/laravel-permission для управления правами и ролями пользователейРаньше с правами так узко не работал, потому прошу совета

190
403 forbidden при запуске контейнеров с помощью docker-compose

403 forbidden при запуске контейнеров с помощью docker-compose

есть два докер-образа, которые хочу запустить вместе с помощью docker-composeпервый образ - официальный nginx, второй - официальный php

224