Оказалось, что на новом сервере некорректно работает функция
function _recaptcha_http_post() из recaptchalib.php (директория lib)
Точнее эта функция вызывает download_file_content() из filelib.php
Результат вызова оказывался False.
Для проверки работоспособности своего сервиса
ReCAPTCHA распространяет тестовый код http://recaptcha.googlecode.com/files/recaptcha-php-1.10.zip
Он оказался работающим и на новом сервере, и на старом.
Когда я заменил function _recaptcha_http_post(), все заработало!
было |
стало |
$req = _recaptcha_qsencode ($data); $headers = array(); $headers['Host'] = $host; $headers['Content-Type'] = 'application/x-www-form-urlencoded'; $headers['Content-Length'] = strlen($req); $headers['User-Agent'] = 'reCAPTCHA/PHP'; $results = download_file_content("$protocol://" . $host . $path, $headers, $data, false, 300, 20, true); if ($results) { return array(1 => $results); } else { return false; } |
$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, 80, $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; |