O que está bloqueando o fsockopen?
Depois de lutar por meio dia, finalmente consegui que o reCAPTCHA funcione convertendo essa função:
<code>function _recaptcha_http_post($host, $path, $data, $port = 80) { $req = _recaptcha_qsencode ($data); $http_request = "POST $path HTTP/1.0\r\n"; $http_request .= "Host: $host\r\n"; $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; $http_request .= "Content-Length: " . strlen($req) . "\r\n"; $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; $http_request .= "\r\n"; $http_request .= $req; $response = ""; if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { die ("Could not open socket"); } fwrite($fs, $http_request); while ( !feof($fs) ) $response .= fgets($fs, 1160); // One TCP-IP packet fclose($fs); $response = explode("\r\n\r\n", $response, 2); return $response; } </code>
para:
<code>function _recaptcha_http_post($host, $path, $data, $port = 80) { $req = _recaptcha_qsencode ($data); $request = curl_init("http://".$host.$path); curl_setopt($request, CURLOPT_USERAGENT, "reCAPTCHA/PHP"); curl_setopt($request, CURLOPT_POST, true); curl_setopt($request, CURLOPT_POSTFIELDS, $req); curl_setopt($request, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($request); return $response; } </code>
Basicamente, estou interessado em descobrir por quecurl
funciona enquantofsockopen
falha com "Não foi possível abrir o soquete". Obrigado.
além do que, além do mais: Suporte de sockets está ativado.