我一直在try 从服务器上创建的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行停止,出现以下错误:
- Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in ...php on line 2
- 警告:file_get_contents():无法在中启用加密...php开启
- 警告:
我们使用的是Gentoo服务器.我们最近升级到了PHP版本5.6.这个问题是在升级之后出现的.
我发现,当我将睡觉服务替换为https://www.google.com
这样的地址时,我的页面工作得很好.
在之前的一次try 中,我设置了“verify_peer”=>false
,并将其作为参数传递给file_get_contents,如下所述:file_get_contents ignoring verify_peer=>false?,但如作者所述;这没什么区别.
我已经询问了我们的一位服务器管理员php.ini文件中是否存在以下行:
- extension=php_openssl.动态链接库
- 允许打开
他告诉我,因为我们在Gentoo上,所以在构建时会编译openssl;而且它不是在php中设置的.ini文件.
我还确认了allow_url_fopen
正在工作.由于这个问题的专业性,我找不到很多可以帮助的信息.你们中有谁遇到过这样的事情吗?谢谢.