Laravel部署GoDaddy出现500内部服务器错误求助
问题核心分析
你的.env配置的数据库用户是myusername,但错误日志里显示Laravel尝试用不存在的softkxnz_ecommerce用户连接数据库,说明当前生效的数据库配置并非你看到的.env内容,要么是配置被覆盖,要么是缓存未清除彻底。
具体解决步骤
检查config/database.php的硬编码配置
打开项目根目录下的config/database.php,找到mysql配置段,确认用户名和密码是否使用env()函数读取,而非直接写死:'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', ''), 'username' => env('DB_USERNAME', ''), // 不能直接写'softkxnz_ecommerce' 'password' => env('DB_PASSWORD', ''), // ...其他配置 ],如果这里直接写死了
softkxnz_ecommerce,改成用env('DB_USERNAME')读取。修正.env文件的语法错误
你的.env里用户名和密码加了单引号,Laravel的.env文件不需要额外引号,这会导致读取到的用户名是'myusername'(带引号),与实际数据库用户不符,去掉引号:DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=database1 DB_USERNAME=myusername DB_PASSWORD=mypass彻底清除所有缓存
通过GoDaddy SSH执行以下命令,确保Laravel的配置、缓存都被清除:php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear如果服务器开启了OPcache,需联系GoDaddy支持重启PHP服务,或在主机控制面板找到PHP重启选项,避免OPcache缓存旧配置文件。
确认.env文件的权限和正确性
- 检查服务器上的.env文件是否为修改后的版本,避免FTP上传失败导致旧配置残留。
- 设置.env文件权限为
644,确保Laravel进程能读取该文件:chmod 644 .env
检查环境特定配置文件
确认项目根目录下是否有.env.local、.env.production这类环境专属配置文件,这些文件的配置会覆盖主.env,若存在需检查其中的数据库用户配置。重新生成配置缓存(可选)
确认上述步骤完成后,若需要缓存配置提升性能,执行:php artisan config:cache注意:执行此命令后,Laravel会将所有配置缓存到文件中,后续修改.env需要重新执行
config:clear和config:cache。
内容的提问来源于stack exchange,提问作者user24580233

