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

Laravel 4.2.22代码库无法连接AWS RDS数据库问题排查求助

排查方向

错误提示中的(13)是Linux系统层面的「权限拒绝」错误码,优先排查操作系统/服务进程级的权限限制,以下是按优先级排序的排查项:

1. 排查SELinux策略限制(90%概率为该问题)

  • 先临时关闭SELinux验证:执行命令 setenforce 0,再访问API测试连接,如果恢复正常即可确认是SELinux策略拦截了Apache的数据库连接请求。
  • 无需关闭SELinux的永久解决方案:执行命令 setsebool -P httpd_can_network_connect_db 1,给Apache进程开放访问数据库的网络权限即可。

2. 排查Apache运行环境的配置读取问题

  • 你本地用php artisan serve调用的是PHP CLI的配置,而服务器上Apache调用的是mod_php/php-fpm的配置,两者的环境变量、加载的配置文件可能存在差异。
  • 先写简易测试脚本排除Laravel框架问题:在站点根目录新建测试文件test_pdo.php,代码如下,通过浏览器访问该文件看连接结果:
<?php
try {
    $pdo = new PDO('mysql:host=你的RDS域名;port=3306;dbname=你的数据库名', '数据库用户名', '数据库密码');
    echo "连接成功";
} catch (PDOException $e) {
    echo "连接失败:".$e->getMessage();
}
  • 如果测试脚本也报相同错误,说明和Laravel框架无关,问题出在Apache/PHP服务层面。
  • 核对Laravel环境配置:Laravel 4.2支持多环境配置,确认你部署的stage环境下app/config/stage/database.php的配置和你本地使用的配置完全一致,避免硬编码错误。

3. 排查服务器进程级网络限制

  • 你在shell下能连接数据库不代表Apache进程也有权限发起网络请求,执行命令 sudo -u www-data telnet 你的RDS域名 3306(把www-data替换成你服务器上Apache的运行用户),测试Apache用户是否能正常访问RDS的3306端口。
  • 检查服务器上的iptables/firewalld规则,确认没有限制Apache进程的出站请求。
  • 二次核对AWS RDS安全组规则,确认已经放行本地机房服务器的公网IP访问3306端口。

4. 排查PHP模块兼容问题

  • 对比服务器PHP版本和本地测试环境的PHP版本,低版本PHP的PDO_MYSQL扩展可能存在兼容性问题,无法适配RDS的密码加密规则、SSL连接要求。
  • 检查Apache对应的php.ini配置,确认pdo_mysql扩展已正常启用,没有配置错误的socket路径、连接限制参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:39:03