при отладке curl-кода часто рекомендуется включить CURLOPT_VERBOSE и проверить журнал stderr.Более того, если curl_exec повторно установил bool (false), это означает, что возникла проблема с передачей, и вы можете использовать функцию curl_error () для получения сообщения об ошибке.и, наконец, не устанавливайте заголовок "Content-Type: multipart/form-data"
вручную, curl установит этот заголовок для вас, и, в отличие от вас, curl не будет делать никаких опечаток при этом, и, что еще хуже, вы рискуете перезаписать / удалить параметр borderheader.
попробуйте
$file_path = $target_dir . $newfilename;
$cFile = curl_file_create ( $file_path );
$data = array (
"file" => $cFile
);
$target_url = "https://filedrop.gfycat.com";
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $target_url );
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
try {
$stderrh = tmpfile ();
curl_setopt_array ( $ch, array (
CURLOPT_VERBOSE => 1,
CURLOPT_STDERR => $stderrh
) );
$response = curl_exec ( $ch );
if ($response === false) {
throw new \RuntimeException ( "curl error " . curl_errno ( $ch ) . ": " . curl_error ( $ch ) . " - verbose log: " . file_get_contents ( stream_get_meta_data ( $stderrh ) ['uri'] ) ); // https://bugs.php.net/bug.php?id=76268
}
} finally{
curl_setopt_array ( $ch, array (
CURLOPT_VERBOSE => 0,
CURLOPT_STDERR => STDERR
) );
fclose ( $stderrh );
}
var_dump ( $response ); // bool(false) here
curl_close ( $ch );
сейчас, если есть ошибка, она должна дать вам хороший подробный журнал того, что произошло до ошибки curl, в журнале ошибок исключений.