嘗試將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