html — CURL в PHP не подключается при запуске с сервера разработки

Я использую cURL в PHP для загрузки видео в Wistia. Все отлично работает на моем локальном сервере. Но на сервере Dev видео не загружается. Используя var_dump (curl_getinfo ($ ch)), я могу видеть Тип содержимого отличается от локального до dev-сервера. Я в замешательстве. Может ли кто-нибудь помочь мне решить эту проблему.

Вот мой код:

public function video_upload($filePath)
{
$data = array(
'api_password'  => '0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5',
'file'          => '@'.$filePath,
);

$url = 'https://upload.wistia.com';
$ch  = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL            => $url,
CURLOPT_POST           => true,
CURLOPT_POSTFIELDS     => $data,
CURLOPT_HEADER         => false,
CURLOPT_RETURNTRANSFER => true,
));
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$response = curl_exec($ch);

var_dump(curl_getinfo($ch));
var_dump(curl_errno($ch));
curl_close($ch);

return $response;
}

Ответ получен на моем локальном сервере:

array(27) {
["url"]=> string(26) "https://upload.wistia.com/"**["content_type"]=> string(30) "application/json;charset=utf-8"**
["http_code"]=> int(200)
["header_size"]=> int(688)
["request_size"]=> int(189)
["filetime"]=> int(-1)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(17.850026)
["namelookup_time"]=> float(0.252903)
["connect_time"]=> float(0.253271)
["pretransfer_time"]=> float(1.903306)
["size_upload"]=> float(279250)
["size_download"]=> float(417)
["speed_download"]=> float(23)
["speed_upload"]=> float(15644)
["download_content_length"]=> float(417)
["upload_content_length"]=> float(279250)
["starttransfer_time"]=> float(2.173591)
["redirect_time"]=> float(0)
["redirect_url"]=> string(0) ""["primary_ip"]=> string(13) "162.209.95.19"["certinfo"]=> array(0) { }
["primary_port"]=> int(443)
["local_ip"]=> string(13) "192.168.1.157"["local_port"]=> int(54999)
["request_header"]=> string(189) "POST / HTTP/1.1 Host: upload.wistia.com Accept: */* Content-Length: 279250 Expect: 100-continue Content-Type: multipart/form-data; boundary=------------------------370a5719d6336ecc "} int(0)

Ответ получен на моем сервере разработки:

array(27) {
["url"]=> string(26) "https://upload.wistia.com/"**["content_type"]=> string(23) "text/html;charset=utf-8"**
["http_code"]=> int(500)
["header_size"]=> int(718)
["request_size"]=> int(186)
["filetime"]=> int(-1)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(0.437061)
["namelookup_time"]=> float(0.004766)
["connect_time"]=> float(0.023656)
["pretransfer_time"]=> float(0.194844)
["size_upload"]=> float(319)
["size_download"]=> float(30)
["speed_download"]=> float(68)
["speed_upload"]=> float(729)
["download_content_length"]=> float(30)
["upload_content_length"]=> float(319)
["starttransfer_time"]=> float(0.216544)
["redirect_time"]=> float(0)
["redirect_url"]=> string(0) ""["primary_ip"]=> string(15) "162.242.168.223"["certinfo"]=> array(0) { }
["primary_port"]=> int(443)
["local_ip"]=> string(14) "224.178.240.48"["local_port"]=> int(55164)
["request_header"]=> string(186) "POST / HTTP/1.1 Host: upload.wistia.com Accept: */* Content-Length: 319 Expect: 100-continue Content-Type: multipart/form-data; boundary=----------------------------d45c07c28860 "} int(0)

0

Решение

Трудно сказать, почему он не работает, но ответ, который вы получаете с сервера, включает 500 http код состояния, который указывает, что что-то не так на сервере.

Вполне возможно, что с вашей стороны что-то не так, но без дополнительной информации с сервера очень сложно сказать, что происходит не так. В общем, 500 ответы от сервера указывают на ошибку сервера (wistia), а не ошибку клиента (вас).

Возможно, вы захотите отправить информацию в Wistia, чтобы получить более подробную информацию.

0

Другие решения

Вы получаете ошибку 500 от сервера во втором ответе. Вот почему это не JSON.

0

Могу поспорить, что вы делаете другой запрос POST в целом,
нравится

$verbosefileh=tmpfile();
$verbosefile=stream_get_meta_data($verbosefileh)['uri'];
curl_setopt_array($ch,array(
CURLOPT_CERTINFO=>true,
CURLOPT_VERBOSE=>true,
CURLOPT_STDERR=>$verbosefileh
));
curl_exec($ch);
$postrequest=file_get_contents($verbosefile);

затем внимательно изучите почтовый запрос, в чем разница между запросом, отправленным двумя серверами? Могу поспорить, что-то есть .. если вы не заблокированы из-за IP-запрета

edit: общая ошибка, в некоторых установках curl имеет стандартный пользовательский агент, а в некоторых установках curl нет. (как и в Debian 6, это что-то вроде «curl / 7.21.3 (x86_64-unknown-linux-gnu)» libcurl / 7.21.3 OpenSSL / 1.0.0c zlib / 1.2.5 », тогда как в Debian 8 нет IS по умолчанию string .. или наоборот?), и многие сайты будут блокировать запросы, которые не содержат useragent. чтобы убедиться, что у вас есть userragent, вы можете использовать curl_setopt ($ ch, CURLOPT_USERAGENT, ‘curl php’);

0
По вопросам рекламы [email protected]