我正在使用Google Recaptcha库(https://github.com/google/recaptcha)来确认提交表单。这已经好几个月了。突然间,我开始注意到很多错误:
ErrorException: file_get_contents(): Failed to enable crypto in /vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php:68
(来自\ ReCaptcha \ ReCaptcha :: verify) 可以使用简单的请求(库外)间歇地复制此异常:
file_get_contents('https://www.google.com/recaptcha/api/siteverify');
如果出现错误,在显示错误之前需要大约52秒才能超时,否则会立即成功。不知道这个超时值来自何处。较旧的帖子暗示此错误与SSL3有关(事实并非如此 - 显然Google没有使用它,它使用TLS 1.2)。我也尝试使用最新的cacerts.pem文件(来自curl),但问题仍然存在。
使用curl(来自PHP或cli)拉取该URL也没有问题。
服务器在Ubuntu 14.04上运行PHP 7.1.3。我不在我的本地机器上遇到此问题,在Ubuntu 16.10上运行相同的PHP,所以我想知道这是否可能以某种方式相关。我真的很茫然。我知道我可以分叉库并重写它以使用curl而不是file_get_contents,但这似乎是最好的解决方法。
答案 0 :(得分:0)
我会减少超时,因为用户不能等待52秒,只是让它失败。
有时事情会失败,只要你抓住错误并向用户展示" soft"它就会失败,这不是什么大不了的事。错误。
问题是让用户在事情失败时保持等待,我认为并没有传达出色的用户体验。