La solicitud cURL con el proxy socks5 falla al usar PHP, pero funciona a través de la línea de comando

cURL + proxy novo aquí, teniendo un momento difícil. Tengo problemas para recuperar una página web desde un servidor seguro remoto a través de un proxy. Todo aparentemente ha sido configurado correctamente por un desarrollador remoto, de modo que la siguiente instrucción de línea de comando funciona y devuelve lo que estamos buscando:

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

Sin embargo, el siguiente PHP no se hace eco de la página web solicitada. En su lugar, repite el error “No se pudo resolver el nombre de host”:

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

Si el $ url se cambia a una página pública, como Google, la solicitud es exitosa y todos están contentos.

La conexión requiere un túnel SSH si eso cambia algo. El túnel está abierto y funcionando, como lo demuestra la solicitud de la línea de comando.

¿Hay algo obvio que se echa de menos aquí?

    Parece que CURLPROXY_SOCKS5_HOSTNAME no está definido en PHP, pero puede usar explícitamente su valor que es igual a 7.

    Prueba esto:

     curl_setopt($ch, CURLOPT_PROXYTYPE, 7);