SQLSTATE[HY000][2002]在Elastic Beanstalk/Laravel上执行命令时没有这样的文件



我在Laravel 5.1/AWS Elastic Beanstalk中有一个生产应用程序。

由于我有几个环境和自动部署,我不使用.env,但我直接在服务器上定义我的环境变量:

当代码被部署到Elastic beanstall时,我不能执行任何命令,因为环境变量没有被解析。

所以,当我执行:

 php artisan migrate

我得到:

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory

在这篇文章中,用户遇到了和我完全相同的问题,但他解决了这个问题,创建了一个.environment,其中包含他所有环境的vars。我不太喜欢它。

然后,如果我把它放在.gitignore中,连续部署将永远不会部署它。

我不知道该怎么办,也不想在我的git中包含我的数据库连接设置。。。

我遇到了这个问题,并通过在Elastic Beanstalk中的DB_HOST环境变量末尾添加端口来解决它。如果有人遇到此问题并且不使用EB env vars,请尝试将端口添加到.env.

出现此消息的原因是,PHP正在寻找MySQL套接字文件,而服务器上没有安装MySQL,因此您需要使用RDS或EC2上托管的MySQL实例,或其他地方。

要配置数据库,您可以使用AWS EB命令行工具,如本文所述:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html

例如eb setenv DATABASE=laravel PASSWORD=123

或者您可以使用web控制台配置它们:

http://docs.aws.amazon.com/gettingstarted/latest/deploy/envvar.html

保存这些会导致应用程序更新,所以一次执行所有操作,因为在部署更改时您将无法编辑任何内容。

其他选项包括:

在源代码管理中存储凭据

将它们存储在Elastic Beanstalk接口中,该接口将它们推送到环境变量中

将它们存储在S3上的一个文件中,您将其锁定为只能由您的Elastic Beanstalk实例访问,并向.eextensions配置文件中添加一些内容

如果你能澄清为什么这些都不正确,这可能有助于找到正确的解决方案。

相关内容

  • 没有找到相关文章

最新更新