尝试将Symfony 3.2/Doctrine应用程序部署到Swisscom PaaS。数据库连接被Symfony/PHP拒绝
Buildpack(PHP 7的httpd等)安装,作曲家运行和安装的依赖,但调用后的命令作曲家时,像缓存:清楚,我得到一个:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
我清单.yml:
applications:
- services:
- dbservice
buildpack: php_buildpack
host: myapp
name: MyApp
instances: 1
memory: 640M
env:
SYMFONY_ENV: prod
PHP_INI_SCAN_DIR: .bp-config/php/conf.d
我options.json:
"WEB_SERVER": "httpd",
"COMPOSER_INSTALL_OPTIONS": ["--no-dev --optimize-autoloader --no-progress --no-interaction"],
"COMPOSER_VENDOR_DIR": "vendor",
"SYMFONY_ENV": "prod",
"WEBDIR": "web",
"PHP_MODULES": "fpm",
"PHP_VERSION": "{PHP_70_LATEST}",
"PHP_EXTENSIONS": [
"bz2",
"zlib",
"curl",
"mcrypt",
"openssl",
"mbstring",
"pdo",
"pdo_mysql"
],
"ZEND_EXTENSIONS": [
"opcache"
]
这是我读VCAP在Symfony的数据库凭证和设置参数(这是完全有VCAPSERVICES ENV的本地设置工作瓦尔):
$vcapServices = json_decode($_ENV['VCAP_SERVICES']);
$container->setParameter('database_driver', 'pdo_mysql');
$db = $vcapServices->{'mariadb'}[0]->credentials;
$container->setParameter('database_host', $db->host);
$container->setParameter('database_port', $db->port);
$container->setParameter('database_name', $db->name);
$container->setParameter('database_user', $db->username);
$container->setParameter('database_password', $db->password);
// Just for debug:
echo 'User: ';
var_dump($container->getParameter('database_user'));
echo 'Db: ';
var_dump($db);
服务正在运行,既提供的var_dump的预期值。但仍然连接被拒绝。
我在做什么错?
**** ****编辑 类似的问题似乎是在这里,但没有一个解决方案:Cloud foundry p-mysql
**** ****编辑
我调试下来的权利PDO构造函数被调用的语句。
它被称为具有下列参数:
$dsn = mysql:host=10.0.20.18;port=3306;dbname=CF_DB922DD3_CACB_4344_9948_746E585732B5;
$username = "myrealusername"; // as looked up in VCAP_SERVICES
$password = "myrealpassword"; // as looked up in VCAP_SERVICES
$options = array();
任何长相酷似它可以在服务绑定Web控制台中可以看出。
是一个unix_socket成功连接要求?
**** ****编辑
symfony作为使用一些作曲家的安装后,命令(在这种情况下,例如,清除和热身cache),它已经要求工作数据库连接,这cloudfoundry不支持数据库服务,只要容器没有完全构建和部署?
我的想法已经耗尽。
谢谢,最后我发现在swisscomdev的支持下,在登台期间数据库连接不可用。将在周一确认并在此处提供更新。 – LBA
所以我能够连接到任何地方的运行数据库,唯一的'缺失的链接'是应用程序升级期间从我的应用程序到数据库服务的不完整绑定。 – LBA