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

Bedrock分支站点页面报数据库错误但WP-CLI可连接的排查求助

排查Bedrock + Valet下Web请求数据库连接失败的方向
  • 核对Web与CLI的PHP配置差异

    • 先确认Web环境和CLI使用的PHP版本是否一致:在Web页面输出phpinfo()查看版本,CLI执行php -v对比,Valet可能同时安装多个PHP版本,Web和CLI可能用了不同的版本。
    • 检查两者的php.ini配置:重点看MySQL/MariaDB相关的参数,比如mysqli.default_socket、pdo_mysql.default_socket、max_allowed_packet,尤其是socket路径,Web环境的PHP如果配置了错误的socket路径,会导致连接失败且MariaDB日志无记录(因为请求没到达数据库)。
    • 对比两者的PHP扩展加载情况:CLI执行php -m | grep mysql,Web在phpinfo()里查看mysqli、pdo_mysql扩展是否启用,确保Web环境的PHP加载了正确的数据库驱动。
  • 验证Bedrock的数据库配置加载逻辑

    • 在Web页面和CLI分别输出数据库配置参数:Web端写个简单脚本输出var_dump(getenv('DB_HOST'), getenv('DB_USER'), getenv('DB_NAME')),CLI执行wp eval 'var_dump(DB_HOST, DB_USER, DB_NAME);',对比两者的配置是否一致,确认Web环境是否正确读取了.env文件。
    • 检查Valet的Nginx配置:查看站点对应的Nginx配置文件(路径一般是~/.config/valet/Nginx/[你的站点域名].test),确认是否通过fastcgi_param传递了环境变量,比如是否有fastcgi_param DB_HOST $env_DB_HOST;这类配置,避免Nginx覆盖了.env的变量。
    • 尝试手动指定DB连接方式:把.env里的DB_HOST从localhost改成127.0.0.1,强制使用TCP连接而非socket,排查socket路径配置错误的问题。
  • 直接测试Web环境的数据库连接

    • 在项目根目录创建test-db.php脚本,用原生mysqli或PDO直接连接数据库,获取具体错误信息:
      <?php
      // 从.env读取配置,或直接写死测试
      $host = getenv('DB_HOST') ?: '127.0.0.1';
      $user = getenv('DB_USER') ?: 'your-db-user';
      $pass = getenv('DB_PASSWORD') ?: 'your-db-pass';
      $dbname = getenv('DB_NAME') ?: 'your-db-name';
      
      // mysqli测试
      $conn = mysqli_connect($host, $user, $pass, $dbname);
      if (!$conn) {
          die("连接失败: " . mysqli_connect_error());
      }
      echo "数据库连接成功";
      mysqli_close($conn);
      
    • 访问这个脚本,查看具体错误,WordPress的默认错误提示通常比较模糊,原生连接测试能暴露更细节的问题,比如驱动缺失、权限不足等。
  • 排查MariaDB的权限与连接限制

    • 检查数据库用户的主机权限:登录MariaDB执行SELECT user, host FROM mysql.user;,确认你的数据库用户是否允许Web进程的用户(比如_www、nginx)从localhost或127.0.0.1连接。
    • 验证用户权限:执行GRANT ALL PRIVILEGES ON your-db-name.* TO 'your-db-user'@'localhost';(或@'127.0.0.1'),然后FLUSH PRIVILEGES;,排除权限不足的问题。
  • 检查Web服务器与Valet的日志

    • 查看Nginx错误日志:路径一般是/usr/local/var/log/nginx/error.log,里面可能记录了Web请求时PHP的错误信息,比如驱动加载失败、配置读取错误等。
    • 查看PHP错误日志:在phpinfo()页面找到error_log对应的路径,查看里面的详细错误,这是定位Web环境问题的关键,因为MariaDB日志没记录说明连接请求没到达数据库,问题出在PHP或Web服务器层面。

内容的提问来源于stack exchange,提问作者constantijn van hartesveldt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:45:32