2016-03-02 6 views
0

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

Вот мой код:

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) 

Ответ получен в моем Dev сервере:

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

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

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

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

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); 

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

Редактирование: обычная игра, на некоторых установках завиток имеет пользовательский аккаунт по умолчанию, а на некоторых установках завиток нет. (например, в 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 отсутствует значение по умолчанию string .. или это было наоборот?), и многие веб-сайты будут блокировать запросы, которые не содержат useragent. чтобы убедиться, что у вас есть useragent, вы можете использовать curl_setopt ($ ch, CURLOPT_USERAGENT, 'curl php');

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^