Arduino向Google Cloud中PHP文件发送数据失败问题求助
排查步骤与解决方案
1. 检查Google Cloud服务器的HTTP请求日志
先查看对应服务(Compute Engine实例/Cloud Run等)的访问日志,确认Arduino请求是否到达服务器:
- 无请求记录:
- 核实公网IP
35.187.182.xxx是否为当前运行PHP的实例IP,是否有更换过 - 确认防火墙规则生效:除开放80端口,可临时允许
0.0.0.0/0测试(测试后恢复限制) - 用Arduino AT命令
AT+PING="google.com"验证设备联网状态
- 核实公网IP
- 有请求但返回非200状态码:
- 404:检查
submit_data01.php路径是否匹配服务器根目录(如Apache的/var/www/html/) - 403:给PHP文件及目录设置正确权限:
chmod 644 /var/www/html/submit_data01.php、chmod 755 /var/www/html/ - 500:查看服务器错误日志(如
/var/log/apache2/error.log),排查Firebase SDK配置、PHP扩展缺失(curl/json)或代码语法问题
- 404:检查
2. 验证云端PHP的Firebase同步逻辑
本地运行正常不代表云端环境兼容:
- 核对云端PHP版本与本地是否一致,避免版本兼容问题
- 确认Firebase服务账号密钥已上传至云端,且代码中路径正确
- 直接用curl或浏览器访问云端PHP:
curl "http://35.187.182.xxx/submit_data01.php?data1=test&data2=test&data3=test&data4=1",观察是否同步Firebase及返回内容
3. 检查Arduino AT命令格式
- 处理参数URL编码:lat/lng的小数点、mac地址的冒号等特殊字符可能导致请求异常,用Arduino的
urlEncode()函数处理每个参数后再拼接 - 检查命令长度:部分WiFi/GSM模块对AT命令长度有限制,尝试用固定短参数测试是否能成功
4. 确认云端出站网络权限
确保服务器允许访问Firebase相关域名(firebaseio.com、googleapis.com),放行443端口(Firebase用HTTPS),避免VPC防火墙拦截出站请求
5. 改用HTTPS请求(推荐)
Google Cloud多数环境优先支持HTTPS,可配置Let's Encrypt免费证书后修改AT命令:
String cmdString = "AT+HTTPGET=\"https://35.187.182.xxx/submit_data01.php?data1=" + lat +"&data2=" + lng + "&data3=" + mac + "&data4=" + String(flag) + "\"";
注意确认WiFi/GSM模块支持HTTPS,部分模块需额外开启证书支持
内容的提问来源于stack exchange,提问作者Carles Casademunt
相关产品推荐
相关产品推荐

