Запрос cURL с использованием прокси-сервера socks5 не работает при использовании PHP, но он работает через командную строку

cURL + proxy noob здесь, имея трудное время. У меня возникли проблемы с попыткой получить веб-страницу с удаленного защищенного сервера через прокси. Все, по-видимому, правильно настроено удаленным разработчиком, так что следующая команда командной строки работает и возвращает то, что мы ищем:

curl -k --socks5-hostname localhost:xxxx https://hostname/ 

Однако следующий PHP не повторяет запрошенную веб-страницу. Вместо этого он повторяет ошибку «Не удалось разрешить имя хоста»:

 $proxy = 'localhost:xxxx'; $url = 'https://hostname/'; //$proxyauth = 'user:password'; $ch = curl_init(); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); $curl_scraped_page = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if ($error) echo $error; elseif ($curl_scraped_page) echo $curl_scraped_page; 

Если $ url будет изменен на общедоступную страницу, например Google, запрос будет успешным, и все будут счастливы.

Для соединения требуется SSH-туннель, если это вообще что-то изменит. Туннель открыт и функционирует, что подтверждается запросом командной строки.

Есть ли что-то очевидное, что здесь пропущено?

    Похоже, что CURLPROXY_SOCKS5_HOSTNAME не определен в PHP, но вы можете явно использовать его значение, равное 7.

    Попробуй это:

     curl_setopt($ch, CURLOPT_PROXYTYPE, 7);