Php 获取文件内容不适用于https

Php 获取文件内容不适用于https,php,google-custom-search,Php,Google Custom Search,我在我的网站上使用php和google的新功能。请求的URL如下所示 连接为https,文件\u get\u content()失败。我怎样才能让它工作? 由于我需要在一些外部web托管服务器上托管站点,因此我需要的解决方案不会更改php配置文件或使用大多数web托管站点上的默认选项。您可以使用curl: ## HTTPS url that you are targeting. $url = "https://www.googleapis.com/customsearch/v1?key=INS

我在我的网站上使用php和google的新功能。请求的URL如下所示

连接为https,文件\u get\u content()失败。我怎样才能让它工作?

由于我需要在一些外部web托管服务器上托管站点,因此我需要的解决方案不会更改php配置文件或使用大多数web托管站点上的默认选项。

您可以使用
curl

## HTTPS url that you are targeting.
$url = "https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.23 (Windows NT 5.1; U; en)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

## Below two option will enable the HTTPS option.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
$result = curl_exec($ch);
echo $result;

如果您自己无法修改配置,请与托管提供商联系。这很可能与php核心或启动中缺少openssl有关


如果您是为其他人这样做的,并且您无法控制或联系主机(“某个外部主机”),请解释情况,并帮助他们找到一台启用了相应功能的合适主机。

CURLOPT\u SSL\u VERIFYPEER
CURLOPT\u SSL\u VERIFYHOST
如果我没有任何证书,则必须执行此操作?他正在访问的服务器(googleapis.com)有证书,而不是运行脚本的机器。服务器证书需要验证才能初始化安全连接。虽然我对使用curl的建议没有异议,但“您不能使用file_get_contents()通过https读取网页”这句话是完全错误的。因为那件事投了反对票。谢谢你的通知
file\u get\u contents
与注册的流包装器()一起工作,即使列表中默认不包含
ssl
,也可以按照某人的建议使用openssl扩展配置它(至少对于windows是必需的)。@mazzucci Do wrapper也适用于ssl。我在mannaul中找不到任何关于https的内容。