file_get_contents(): SSL 操作失败,代码为 1,无法启用加密
我一直在尝试从我在服务器上创建的PHP页面访问这个特定的REST服务。我把问题缩小到这两条线。所以我的PHP页面看起来像这样:
<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");
echo $response; ?>
页面在第 2 行死机,并出现以下错误:
- 警告:file_get_contents(): SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证在 ...第 2 行的 php
- 警告:file_get_contents(): 无法在 ...第 2 行的 php
- 警告:file_get_contents(): 无法打开流: 操作失败 ...第 2 行的 php
https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json
我们使用的是Gentoo服务器。我们最近升级到 PHP 版本 5.6。升级后才出现此问题。
我发现当我用这样的地址替换REST服务时;我的页面工作正常。https://www.google.com
在之前的一次尝试中,我设置了 ,并将其作为参数传递给file_get_contents,如下所述:file_get_contents忽略 verify_peer=>false?但正如作者指出的那样;这没有任何区别。“verify_peer”=>false
我问过我们的一位服务器管理员,我们的php.ini文件中是否存在这些行:
- 扩展名 = php_openssl.dll
- allow_url_fopen = 开
他告诉我,由于我们在Gentoo上,所以opensl在我们构建时是编译的。并且它没有在php.ini文件中设置。
我还确认这是有效的。由于这个问题的特殊性;我没有找到很多帮助的信息。你们有没有遇到过这样的事情?谢谢。allow_url_fopen