我已经将基于Yii2的应用程序部署到AWS Elastic Beanstalk上,我还在Elastic Beanstalk上创建了带有数据库(它已经有表)的RDS实例。但是我收到了这个错误:“SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo failed:名称或服务未知”
所有文件都正确上传到AWS实例。
文件/common/config/main-local.php有:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=',
'dsn' => 'mysql:host=RDS_HOSTNAME:RDS_PORT;dbname=RDS_DB_NAME',
'username' => 'RDS_USERNAME',
'password' => 'RDS_PASSWORD',
'charset' => 'utf8',
],
可能有什么不对?感谢。
答案 0 :(得分:1)
我猜你想通过环境变量传递db信息。您可能想尝试修改代码,如下所示。
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=',
'dsn' => 'mysql:host='.$_SERVER['RDS_HOSTNAME'].':'.$_SERVER['RDS_PORT'].';dbname='.$_SERVER['RDS_DB_NAME'],
'username' => $_SERVER['RDS_USERNAME'],
'password' => $_SERVER['RDS_PASSWORD'],
'charset' => 'utf8',
],
您可以在配置环境属性部分中引用http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html#rds-external-ec2classic来配置环境变量。希望这有效。
答案 1 :(得分:0)
你有2次你的' dsn'并且可能第一个存活,所以将配置更改为此应该有效:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=RDS_HOSTNAME:RDS_PORT;dbname=RDS_DB_NAME',
'username' => 'RDS_USERNAME',
'password' => 'RDS_PASSWORD',
'charset' => 'utf8',
],
(另外我希望你知道你必须改变RDS_ *参数:D)