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í?

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

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