2016-06-21 4 views
1

처음에는 cakephp 3 응용 프로그램에 로컬 mysql 데이터베이스를 사용하고 모든 것이 정상적으로 작동하고있었습니다. 나는 cakephp3 응용 프로그램을 배포하는 과정에 있으므로 RDS MySql 인스턴스를 만들고이를 MySql Workbench에 연결하고 이전에 RDS 데이터베이스에 있던 데이터베이스를 복사했습니다. 내 app.php의 설정은 그렇게 비슷합니다. CakePHP3 AWS RDS 데이터베이스의 응용 프로그램 오류

은 내가 RDS 인스턴스에 연결되어 있다고 나는 AWS 콘솔에서 app.php 파일

'Datasources' => [ 
    'default' => [ 
     'className' => 'Cake\Database\Connection', 
     'driver' => 'Cake\Database\Driver\Mysql', 
     'persistent' => false, 
     'host' => RDS_HOSTNAME, 
     /** 
     * CakePHP will use the default DB port based on the driver selected 
     * MySQL on MAMP uses port 8889, MAMP users will want to uncomment 
     * the following line and set the port accordingly 
     */ 
     //'port' => 'non_standard_port_number', 
     'username' => RDS_USERNAME, 
     'password' => RDS_PASSWORD, 
     'database' => RDS_DB_NAME, 
     'encoding' => 'utf8', 
     'timezone' => 'UTC', 
     'flags' => [], 
     'cacheMetadata' => true, 
     'log' => false, 

의 데이터 소스 섹션에서 다음

if (!defined('RDS_HOSTNAME')) { 
    define('RDS_HOSTNAME', $_SERVER['myendpoint.us-west-1.rds.amazonaws.com']); 
    define('RDS_USERNAME', $_SERVER['myusername']); 
    define('RDS_PASSWORD', $_SERVER['mypassword']); 
    define('RDS_DB_NAME', $_SERVER['my_db']); 
} 

이 내 상수를 정의하려면 . 그러나 등록/로그인을 시도 할 때 CakePHP 내부 오류가 발생했습니다. 그런 다음 오류 로그를 확인하고이를 error.log 파일에서 찾았습니다.

2016-06-20 17:25:35 Error: [PDOException] SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) 
Request URL: /users/register 
Referer URL: http://localhost:8765/ 
Client IP: 127.0.0.1 
Stack Trace: 
#0 /home/danielparkk/Desktop/SubReminder/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php(47): PDO->__construct('mysql:host=;por...', NULL, NULL, Array) 
#1 /home/danielparkk/Desktop/SubReminder/vendor/cakephp/cakephp/src/Database/Driver/Mysql.php(90): Cake\Database\Driver\Mysql->_connect('mysql:host=;por...', Array) 

내가 잘못하고있는 것을 이해하지 못합니까? 데이터베이스의 로컬 복사본으로 다시 전환하면 모든 기능이 제대로 작동합니다. 어떤 도움을 주시면 감사하겠습니다.

=====================

2016-06-21T00:22:17.815360Z 24 [Note] Access denied for user 'root'@'108-83-57-226.lightspeed.irvnca.sbcglobal.net' (using password: NO) 
2016-06-21T00:34:38.776248Z 26 [Note] Aborted connection 26 to db: 'subscriptions_db' user: 'root' host: '108-83-57-226.lightspeed.irvnca.sbcglobal.net' (Got timeout reading communication packets) 
2016-06-21T00:34:42.872265Z 25 [Note] Aborted connection 25 to db: 'subscriptions_db' user: 'root' host: '108-83-57-226.lightspeed.irvnca.sbcglobal.net' (Got timeout reading communication packets) 

내 인스턴스의 AWS 콘솔에서 오류 로그를 읽을 때이 출력이 표시됩니다. 솔직히, 이것이 RDS를 처음 사용하는 것이므로 어떤 의미인지는 모르지만 다른 사람들에게 도움이 될 수 있습니다.

답변

0

$ _SERVER는 필요가 없습니다. 나는 또한 아래 코드를 사용하여 cakephp 3.01 AWS RDS를 연결한다.

'Datasources' => [ 
    'default' => [ 
     'className' => 'Cake\Database\Connection', 
     'driver' => 'Cake\Database\Driver\Mysql', 
     'persistent' => false, 
     'host' => 'yourendpoint.us-west-1.rds.amazonaws.com', 
     'username' => 'rdsusername', 
     'password' => 'rdspassword', 
     'database' => 'rdsdatabasename', 
     'encoding' => 'utf8', 
     'timezone' => 'UTC', 
     'cacheMetadata' => true, 

     /** 
     * Set identifier quoting to true if you are using reserved words or 
     * special characters in your table or column names. Enabling this 
     * setting will result in queries built using the Query Builder having 
     * identifiers quoted when creating SQL. It should be noted that this 
     * decreases performance because each query needs to be traversed and 
     * manipulated before being executed. 
     */ 
     'quoteIdentifiers' => false, 

     /** 
     * During development, if using MySQL < 5.6, uncommenting the 
     * following line could boost the speed at which schema metadata is 
     * fetched from the database. It can also be set directly with the 
     * mysql configuration directive 'innodb_stats_on_metadata = 0' 
     * which is the recommended value in production environments 
     */ 
     //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], 
    ] 
    ],