2

我正在向 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 回答 1

1

由于在访问外部内容(例如通过 http)时存在安全风险,file_get_contents 通常在 Web 服务器上被禁用/阻止。

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

于 2012-06-16T11:35:59.760 回答