无法打开流:HTTP请求失败 - 在API中计算距离的Google API请求?

时间:2012-06-16 09:04:00

标签: php google-maps

我发送请求到谷歌地图api服务来计算这个网址的距离:

$apiURL = "http://maps.google.com/maps/geo?&output=xml&key=AIzaSyCYz5Kpw4xTYVwAUibaMIUVBcaL-RfTumk&q=myAddress"

我正在尝试使用file_get_contents($apiURL)和&它与我的本地系统配合得很好。当我将相同的文件上传到服务器时,file_get_contents($apiURL)的输出看起来是空的&给错误像 - 警告:

file_get_contents(http://maps.google.com/maps/geo?&output=xml&key=AIzaSyCYz5Kpw4xTYVwAUibaMIUVBcaL-RfTumk&q=Aerekere
%2Cbangalore%2Ckarnataka) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/stor2-wc1-dfw1/410304/hfg.mpadusa.com/web/content/components/com_helping/controllers/distance.php 
on line 108.

我检查了几件事情,比如

  1. allow_url_fopen:没关系
  2. Linux服务器的新ApI密钥。
  3. 在本地Windows系统中,所有响应都可以。
  4. 我可能会遇到什么问题。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

由于访问外部内容(例如通过http)时存在安全风险,

file_get_contents通常在Web服务器上被禁用/阻止。

作为一种良好的做法,始终使用curl函数来获取外部内容,包括调用google API。您可以在网上找到大量使用curl的示例,但一个简单的起点是手册:http://au2.php.net/curl_exec