@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 пусто.
  • Вопрос задан
  • 1401 просмотр
Пригласить эксперта
Ответы на вопрос 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?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 08:58
15000 руб./за проект
23 апр. 2024, в 08:42
60 руб./за проект