我正在通过部署一个Zf2应用程序与Doctrine在Aws豆柄。Composer正在运行并设置所有内容,然后我运行一个symfony控制台命令,使用在我的配置中指定的参数生成数据库和模式。我按照这里的示例来获得配置的rds参数。
所有这些都可以访问该网站。此时,它会给我一个Pdo访问数据库的错误。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
No such file or directory' in
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43 Stack
trace: #0
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(43):
PDO->__construct('mysql:host=loca...', 'username', 'password', Array) #
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(45):
Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=loca...', 'username',
'password', Array) #2
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(360):
Doctrine\DBAL\Driver\PDOMySql\Driver->connect(Array, 'username', 'password', Array) #3
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429):
Doctrine\DBAL\Connection->connect() #4
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389):
Doctrine\DBAL\Connection->getDatabasePlatformVersion() #5
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/C inzf2应用程序是智能的。部署后,如果我登录到服务器并运行php命令
php public/index.php development enable它将产生与前端网站相同的错误。
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
No such file or directory' in
/var/app/current/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43我正在通过aws配置中的控制台命令来设置数据库模式。这确实设置了正确的数据库,并运行架构和数据导入。
.eb扩展名/合成器.composer.config
container_commands:
01installDev:
command: "/usr/bin/composer.phar install --dev"
02makeDatabase:
command: "/usr/bin/php /var/app/ondeck/cwg.php database:create"
03createDatabase:
command: "/usr/bin/php /var/app/ondeck/cwg.php database:fresh"config/autoload/database.global.php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver',
'params' => array(
'host' => $_SERVER['RDS_HOSTNAME'],
'port' => $_SERVER['RDS_PORT'],
'user' => $_SERVER['RDS_USERNAME'],
'password' => $_SERVER['RDS_PASSWORD'],
'dbname' => 'api_default',
),
),
),
),
);当我运行控制台命令时,我只是创建一个包含这些文件中参数的原则实例,这是与zf2应用程序的唯一区别,但我确实得到了正确的params。
为了调试这一点,我将$options和$pdo变量转储到一个理论或模块工厂中。vendor/doctrine/doctrine-orm-module/src/DoctrineORMModule/Service/DBALConnectionFactory.php
var_dump($options);die();
object(DoctrineORMModule\Options\DBALConnection)#369 (8) { ["configuration":protected]=>
string(11) "orm_default" ["eventmanager":protected]=> string(11) "orm_default
["pdo":protected]=> NULL ["driverClass":protected]=> string(36)
"Doctrine\DBAL\Driver\PDOMySql\Driver" ["wrapperClass":protected]=> NULL
["params":protected]=> array(5) {
["host"]=> string(9) "localhost"
["port"]=> string(4) "3306"
["user"]=> string(8) "username"
["password"]=> string(8) "password"
["dbname"]=>string(8) "database"
} ["doctrineTypeMappings":protected]=> array(0) {
["__strictMode__":protected]=> bool(true) }
var_dump($pdo);die();
NULL正在使用的参数是默认的教义参数。如果zf2没有加载配置文件,我不知道这是否会在进程的早期进行,但是在错误发生之前,我还没有找到与var_dump连接相关的任何其他位置。在我的aws配置设置中,或者在rds服务器和api之间的防火墙规则中(我假设这是为您配置的,因为它设置了所有内容),还是没有正确地执行我的zf2配置,我做错了什么?任何帮助都是非常感谢的。
编辑
我把var_dump移到了第60行
var_dump($connection->getParams());die();
array(8) { ["driverClass"]=> string(36) "Doctrine\DBAL\Driver\PDOMySql\Driver
["wrapperClass"]=> NULL ["pdo"]=> NULL ["host"]=> string(9) "localhost" ["port"]=>
string(4) "3306" ["user"]=> string(8) "username" ["password"]=> string(8) "password
["dbname"]=> string(8) "database" } 我认为这很好地说明了Doctrine根本没有看到我的配置,而且不知怎么的,我正在做一些事情,或者不做一些事情。
发布于 2014-12-23 17:48:35
不知何故,在application.config.php文件中设置了一个用于配置的静态位置。
'config_glob_paths' => array(
'/home/myhome/api/config/autoload/{,*.}{global,local}.php'
),一旦我把它改成
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php'
),教条开始得到正确的配角。
https://stackoverflow.com/questions/27624181
复制相似问题