287 не является допустимым ресурсом дескриптора cURL.

Недавно переключил сервер с Apache2 на nginx/1.4.6 с PHP5-FPM, и каждый раз, когда я пытаюсь запустить curl, я получаю:

curl_error(): 287 is not a valid cURL handle resource

Curl установлен (запуск «curl url» в CLI работает нормально), модуль PHP также установлен.

Мой код:

$file_name_with_full_path = $composed_filename;
$post = array('image'=>'@'.$file_name_with_full_path);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "url");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_PORT , 443);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
$result = curl_exec ($ch);
curl_close ($ch);

Я искал вокруг и нашел несколько ответов, ни один из них не работал. Нашел один, в котором говорилось, что cURL мог удалить дескриптор до того, как это было сделано, как я могу это проверить?


person Sam Pettersson    schedule 25.03.2014    source источник
comment
К вашему сведению, не связанное с этим: @filename API для cURL устарел. Вам следует использовать класс CURLFile.   -  person phpisuber01    schedule 26.03.2014
comment
Как вы печатаете ошибку завитка? может быть после закрытия ручки завитка?   -  person mesutozer    schedule 26.03.2014


Ответы (2)


Я думаю, вам следует использовать функцию curl_file_create. Попробуй это

$file = curl_file_create('fullpath/to/image.jpg','image/jpeg','the_image');
$data = array('the_image' => $file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
person Prabowo Murti    schedule 26.03.2014

При обработке XML я использую is_resource:

$response = curl_exec($ch);
if(is_resource($ch)){
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $responseBody = substr($response, $header_size);
    curl_close($ch);
    return $responseBody;
}
else{
    return $response;
}
person Vit    schedule 07.10.2020