安装Ushahidi 5.3.1遇Database未配置错误求助
Database [<databasename>] not configured 解决方案 问题概述
在共享Web服务器上安装Ushahidi 5.3.1,已完成文件解压、带权限空白MySQL数据库创建步骤,配置.env文件后,在./platform目录执行php artisan migrate时触发错误:Database [<databasename>] not configured.
当前配置信息
.env 文件配置(敏感信息已隐去)
DB_HOST=localhost DB_DATABASE=<databasename> DB_USERNAME=<databasename> DB_PASSWORD=<databasepassword> APP_ENV=local APP_DEBUG=false APP_KEY=<32characterkey> APP_TIMEZONE=UTC CACHE_DRIVER=array QUEUE_DRIVER=sync
服务器环境
- PHP版本:7.4
- 官方安装文档要求的所有PHP模块已启用
- 数据库用户拥有目标数据库的全部操作权限
- 操作方式:cPanel面板及cPanel终端
已尝试的无效操作
- 在phpMyAdmin中重新创建数据库及关联用户
- 修改
.env中的API密钥等非核心配置项 - 执行
php artisan cache:clear清除缓存 - 重新生成
.env文件 - 重新安装Phinx
错误日志核心信息
Laravel日志显示,框架无法找到指定数据库的配置项,触发InvalidArgumentException: Database [<databasename>] not configured.错误,错误源位于ConnectionFactory.php的make方法中。
针对性解决建议
确认.env文件的位置与加载路径
确保.env文件存放在./platform目录(Laravel项目根目录)下,可在终端执行ls -a查看该目录是否包含.env文件。部分共享服务器的路径识别规则特殊,需避免将.env放在上级目录。补全数据库配置项
Ushahidi基于Laravel构建,默认需要完整的MySQL配置项,可在.env中补充以下内容:DB_CONNECTION=mysql DB_PORT=3306若共享服务器使用非默认MySQL端口,可在cPanel数据库管理页面获取实际端口;若服务器要求使用本地套接字连接,将
DB_HOST替换为MySQL套接字文件路径(可通过cPanel查看)。验证基础数据库连接
在./platform目录创建临时测试文件test-db.php,内容如下:<?php $host = 'localhost'; $dbname = '<databasename>'; $user = '<databasename>'; $pass = '<databasepassword>'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); echo "数据库连接成功"; } catch(PDOException $e) { echo "连接失败: " . $e->getMessage(); } ?>执行
php test-db.php,确认数据库本身的连接权限、地址是否正常,排除数据库层面的问题。强制Laravel重新加载配置
执行以下命令清除缓存并重置配置:php artisan cache:clear php artisan config:clear若处于生产环境(
APP_ENV=production),可额外执行php artisan config:cache,但本地环境建议仅执行前两个命令。检查共享服务器PHP函数限制
Laravel加载.env依赖putenv函数,部分共享服务器会禁用此函数。可在终端执行php -i | grep putenv查看状态,若显示禁用,需联系主机服务商开启,或使用cPanel提供的环境变量配置功能替代.env文件。确认PHP版本一致性
部分cPanel服务器支持多PHP版本切换,需确保终端使用的PHP版本与网站运行环境一致。执行php -v查看终端PHP版本,若与网站配置的7.4不符,需在cPanel中切换终端对应的PHP版本。
内容的提问来源于stack exchange,提问作者tarantella

