@nonbody

Почему PHP не соединятся по ssl через fsockopen?

$f = get('https://twitter.com/', 'https://twitter.com/', $_SERVER['HTTP_USER_AGENT'], '', true);
var_dump($f);
function get($url, $ref, $ua, $cook, $ssl)
{
    $url = parse_url($url);
    $line="";
    $connecthost = $ssl ? 'ssl://' . $url['host'] : $url['host'];
    $port = $ssl ? 443  : 80;
    $fp=fsockopen($connecthost, $port, $errno, $errstr, 60);
    
        if(!$fp) {
        return $connecthost . ':    ' . $errstr;
        }
            else
            {
                $query = isset($url['query']) ? '?' . $url['query'] : '';
                $path = $url['path'] . $query;
                $headers = "GET $path HTTP/1.1\r\n";
                $headers .="Host: {$url['host']}\r\n";
                $headers .="User-Agent: $ua\r\n";
                $headers .= "Accept-Language: en,en-US;q=0.9,en;q=0.8\r\n";
                $headers .="Cookie: $cook\r\n";
                $headers .="Connection: Close\r\n";
                $headers .="Referer: $ref\r\n\r\n";
                
                fwrite($fp, $headers);
                
                
                    while(!feof($fp)){
                            
                        $line .= fgets($fp, 1024);
                    }
                
                
                fclose($fp);
            }

    return $line;
}

var_dump($f) ничего не возвращает. В error_log пусто.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
rul22rus
@rul22rus
Frontend&Backend Web Developer
Возможно проблема в том, что отключен параметр allow_url_fopen в php.ini.
Еще может SSL модуль не включен, посмотрите в phpinfo()
Ответ написан
Arris
@Arris
Сапиенсы учатся, играя.
$fp=fsockopen($connecthost, $port, $errno, $errstr, 60);


php.net/manual/ru/function.fsockopen.php

errno
Если этот параметр предоставить, то в случае ошибки системного вызова функции connect() он будет принимать номер этой ошибки.
Если значение параметра errno равно 0, а функция вернула FALSE, значит ошибка произошла до вызова connect(). В большинстве случаев это свидетельствует о проблемах при инициализации сокета.

Читано? Осмыслено? Или пример тупо скопипащен со stackoverflow?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.