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

Laravel应用部署Aruba主机出现Connection timed out问题求助

Laravel应用在Aruba主机上的数据库连接故障排查方案

问题背景

将Vue+Laravel应用部署在无终端访问权限的Aruba基础Linux主机上,此前曾成功连接数据库,但现在无法复现该状态。上传的test.php可正常连接数据库,但修改.env中DB_HOST为localhost或mysql.aruba.it均无效。

现有配置文件

.env文件内容

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:ifOG0g1R9hF3I3F67Ubpui5mw3Qx8Ji5svBdVk4Dgqo=
APP_DEBUG=true
APP_URL=https://www.riverstudio.it/

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=31.11.39.155
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=username
DB_PASSWORD=password

test.php文件内容

<?php
$host = '31.11.39.155';
$port = '3306';
$dbname = 'database';
$username = 'username';
$password = 'password';

$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8mb4";

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Database connection successful!";
} catch (PDOException $e) {
    echo "Database connection failed: " . $e->getMessage();
}
?>

解决步骤

1. 清除Laravel配置缓存

由于无终端权限,通过上传PHP文件执行缓存清理:
创建clear-cache.php文件,内容如下:

<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->call('config:clear');
$kernel->call('cache:clear');
echo "配置缓存已清除";
?>

上传至应用根目录,通过浏览器访问该文件完成缓存清理。Laravel会缓存配置文件,修改.env后若未清理缓存,仍会使用旧配置。

2. 检查.env文件的语法与编码

  • 确保.env中所有配置项的等号前后无多余空格(如DB_HOST = 31.11.39.155会导致读取失败)
  • 用纯文本编辑器(如Notepad++)将.env保存为UTF-8无BOM格式后重新上传,BOM头会干扰Laravel的配置读取

3. 生成Laravel专属连接测试文件

创建laravel-db-test.php文件,内容如下:

<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

use Illuminate\Support\Facades\DB;

try {
    DB::connection()->getPdo();
    echo "Laravel数据库连接成功!";
} catch (\Exception $e) {
    die("Laravel数据库连接失败: " . $e->getMessage());
}
?>

上传至根目录并访问,获取具体错误信息,定位故障原因(如驱动缺失、配置解析错误等)

4. 调整APP_ENV配置

将.env中的APP_ENV=local改为APP_ENV=production,清理缓存后测试连接。Local环境下部分配置逻辑可能与生产环境存在差异。

5. 确认数据库用户权限

虽然test.php可连接,但需确认数据库用户是否允许通过Laravel使用的连接方式访问(如是否限制了特定的客户端标识),可联系Aruba主机服务商确认数据库用户的权限范围。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:40:18