一位同事来找我,要求帮助解决这个特殊的错误。我们使用谷歌的recaptcha API作为我们的注册和登录表单,这似乎在用户访问和注册软件时起作用。但是,我们的错误日志文件显示这样的错误,偶尔出现(我已经删除了某些东西,因为这是来自生产环境):
[2017年1月10日18:37:21] PHP警告:file_get_contents():SSL:操作成功完成。在第76行的文件\ path \ save_register.php中
[10-Jan-2017 18:37:21] PHP警告:file_get_contents():无法在第76行的文件\ path \ save_register.php中启用加密
[10-Jan-2017 18:37:21] PHP警告:file_get_contents(https://www.google.com/recaptcha/api/siteverify?secret=XYZ&response=):无法打开流:第76行的文件\ path \ save_register.php中的操作失败
[2017年1月10日18:37:21] PHP警告:file_get_contents():SSL:操作成功完成。在第76行的文件\ path \ save_register.php中
以下是PHP代码的相关部分及其行号:
74: if (isset($_POST['g-recaptcha-response'])) {
75: $recaptcha_secret = "XYZ";
76: $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
77: $response = json_decode($response, true);
78: }else {
79: $response['success'] = false;
80: }
作为一个说明,到目前为止,我们无法在我们的测试环境中复制这一点,这个测试环境(据称)与生产“完全相同”。根据错误日志,我可以看到$ _POST ['g-recaptcha-response']是一个空值。但是,我目前不确定这是否是导致无法打开流错误之前出现的“启用加密失败”错误的原因。我也不确定为什么错误日志中会出现“操作成功完成”的警告。
服务器在Windows IIS服务器上运行PHP 5.6。