You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用Google Geocode API在生产服务器报错求助

解决PHP调用Google Geocode API在生产服务器的DNS解析失败问题

看起来你的生产服务器遇到了DNS解析故障——两种调用方式报错的核心都是无法解析maps.googleapis.com的主机名,这和你的Google API密钥无关。下面是针对cPanel环境的排查和解决步骤:

1. 先验证服务器的DNS解析能力

首先登录到生产服务器的SSH终端(或者通过cPanel自带的Terminal工具),执行以下命令测试DNS解析:

nslookup maps.googleapis.com
# 或者用dig工具
dig maps.googleapis.com

如果命令返回"Name or service not known",说明服务器的DNS配置确实存在问题。

在cPanel中调整DNS设置:

  • 打开cPanel的Zone Editor(域名解析编辑器),检查当前服务器使用的DNS服务器地址。
  • 如果默认DNS无法正常解析,可以尝试更换为公共DNS,比如Google的8.8.8.8/8.8.4.4或者Cloudflare的1.1.1.1。部分主机商可能限制自行修改DNS,这种情况下可以提交工单联系主机商协助调整。

2. 检查服务器防火墙/网络出站限制

生产服务器的防火墙可能阻止了对外的DNS请求(默认使用53端口),或者屏蔽了Google服务的域名:

  • 在cPanel中找到Firewall工具(比如常用的ConfigServer Security & Firewall),检查Outgoing Rules(出站规则)是否限制了53端口的UDP/TCP请求。
  • 确认是否有规则屏蔽了googleapis.com或maps.googleapis.com域名,如有则删除对应的限制规则。
  • 如果自己无法排查清楚,直接联系主机商确认服务器是否有网络层面的访问限制(比如部分主机商会限制境外服务访问)。

3. 验证PHP相关配置(辅助排查)

虽然DNS是核心问题,但还是可以确认以下PHP设置,排除其他可能性:

  • 打开cPanel的Select PHP Version,切换到Options标签:
    • 确认allow_url_fopen处于开启状态(针对方式1的file_get_contents调用)。
    • 确认curl扩展已启用(针对方式2的curl调用)。

4. 临时测试方案

如果暂时无法修改DNS配置,可以先通过IP直接访问来验证:

  1. 在本地电脑执行nslookup maps.googleapis.com获取它的IP地址。
  2. 将代码中的URL替换为IP形式:
// 方式1修改示例
$url = "https://[获取到的IP]/maps/api/geocode/json?address={$address}&sensor=false&key=".$google_api_key;
$resp_json = file_get_contents($url);

如果能正常返回数据,就彻底确认是DNS解析的问题,专注解决DNS配置即可。


内容的提问来源于stack exchange,提问作者Indra KP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:57:58