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

为什么PHP网站本地运行正常,部署到AWS云后MySQLi数据库连接失败?

两个数据库连接命令的核心区别

你提到的new mysqlit为笔误,正确写法是new mysqli,二者底层实现完全一致,仅调用风格和默认错误处理逻辑有差异:

  • 调用范式不同:mysqli_connect($server, $user, $pass, $database)是过程化写法,连接失败时直接返回false,同时触发PHP警告;new mysqli($server, $user, $pass, $database)是面向对象写法,连接失败时仍会返回mysqli实例对象,不会主动抛出错误,需要通过$conn->connect_error属性自行判断连接状态。
  • 运行表现差异对应你遇到的现象:如果AWS环境开启了错误拦截,过程化写法触发的警告会直接中断页面渲染,导致无法正常运行;面向对象写法因未主动暴露连接错误,代码可继续执行,所以页面能正常访问但所有数据库相关操作失效。
本地正常、AWS远程异常的常见原因
  • 数据库权限与安全组限制:本地数据库一般默认允许本地IP访问,AWS云数据库(如RDS)默认会通过安全组限制访问源,需要在数据库安全组中放行应用服务所在EC2/ECS实例的IP,同时确认数据库账号是否允许对应IP段访问。
  • 连接参数不匹配:本地环境$server一般为127.0.0.1或localhost,AWS环境需要填写云数据库的内网/公网访问端点,需确认地址、端口、账号密码、库名配置是否正确,是否存在硬编码本地配置未适配云环境的问题。
  • PHP环境配置差异:本地PHP默认开启了mysqli扩展,AWS部署的PHP环境可能未启用mysqli扩展,可通过phpinfo()函数确认扩展状态。
  • 网络连通性限制:AWS VPC默认会拦截未放行的端口请求,需确认应用服务到数据库的3306端口是否已在VPC网络ACL、安全组规则中放行,可通过telnet 数据库地址 3306命令测试连通性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:18:01