Ответы пользователя по тегу YouTube
  • Как побороть ошибку с file_get_contents failed to open stream: HTTP request failed! HTTP/1.0 400 - https youtube?

    dklight
    @dklight Автор вопроса
    php кодер - level 2.5
    вопрос решен, однако через file_get_contents не получилось, пришлось использовать fopen:
    $scu = $url . '?' . http_build_query($data);
    $opts = array('http' =>
        array(
            'method' => 'GET',
            'max_redirects' => '0',
            'ignore_errors' => '1',        
        )
        , 'ssl' => array(
    		'verify_peer' => true,
    		'cafile' => '/SRV/php721/extras/ssl/' . "cacert.pem",
    		'ciphers' => 'HIGH:TLSv1.2:TLSv1.1:TLSv1.0:!SSLv3:!SSLv2',
    		'CN_match' => $cn_match,
    		'disable_compression' => true,
    	)
    );
    
    $context = stream_context_create($opts);
    $stream = fopen($scu, 'r', false, $context);
    
    // информация о заголовках, а также
    // метаданные о потоке
    echo Debug::d(stream_get_meta_data($stream),'stream_get_meta_data($stream)');
    
    // актуальная информация по ссылке $url
    echo Debug::d(stream_get_contents($stream),'stream_get_contents($stream)');
    fclose($stream);
    Ответ написан
    2 комментария
  • Как заставить заработать Google_Service_YouTube в yii2?

    dklight
    @dklight Автор вопроса
    php кодер - level 2.5
    Получил решение.

    Если использовать тот же код, но без yii2, то удается узнать что проблема связана с ssl и curl. Почему встроенный отладчик сходу его не выдает не понятно.

    выполняем следующее:
    1. скачать отсюда https://curl.haxx.se/docs/caextract.html файл cacert.pem
    2. прописать его в php.ini --> curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
    3. перезагрузить сервер

    Далее получается та же ошибка (которую выдавал yii2), а именно:

    Warning: count(): Parameter must be an array or an object that implements Countable in ...\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 73

    Находим эту строку:
    if (count($this->handles) >= $this->maxHandles)
    и затыкаем его, используя @

    Решение временное, но нужную информацию удается получить после:

    $api_key = 'super_cool_api_key';
    
    $client = new Google_Client();
    $client->setDeveloperKey($api_key);
    
    $youtube = new Google_Service_YouTube($client);
    
    $rs2 = $youtube->search->listSearch('id,snippet', array(
       'q' => 'toster forum',
       'maxResults' => 7,
    ));
    
    echo Debug::d($rs2,'resulting...',2);
    Ответ написан
    Комментировать