Я не могу настроить свой проект Symfony 3 на Google App Engine Flexible для подключения к Google Cloud SQL (MySQL, 2-го поколения).
Начнем с этих примеров
https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/appengine/fflexible/symfony
Я создал Google App Engine и Google Cloud SQL (MySQL, 2-го поколения), оба на europe-west3. Я тестировал эти примеры на своем GAE, и оба они работали нормально.
Затем я создал новый, очень простой проект Symfony 3.3 с нуля. После создания (только с экраном приветствия и надписью «Ваше приложение готово. Вы можете начать работу над ним по адресу: / app /») я развернул его на моем GAEflex, и он отлично работает.
После этого я добавил одну простую сущность и дополнительный контроллер для этого. Это отлично работает, как и должно, при запуске Googles cloud_sql_proxy и встроенного веб-сервера Symfony «php bin / console server: run». Он легко читает и записывает в Cloud SQL и из него.
Но, что бы я ни пробовал, я всегда получаю сообщение «Connection Refused» для одной (или другой, в зависимости от моего состояния экспериментов) команд из «symfony-scripts» «post-install-cmd» в моем composer.json .
Вывод "развертывание бета-приложения $ gcloud" (отрывок)
...
Step #1: Install PHP extensions...
Step #1: Running composer...
Step #1: Loading composer repositories with package information
...
Step #1: [Doctrine\DBAL\Exception\ConnectionException]
Step #1: An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
Step #1:
Step #1:
Step #1: [Doctrine\DBAL\Driver\PDOException]
Step #1: SQLSTATE[HY000] [2002] Connection refused
Step #1:
Step #1:
Step #1: [PDOException]
Step #1: SQLSTATE[HY000] [2002] Connection refused
...
parameters.yml (отрывок)
parameters:
database_host: 127.0.0.1
database_port: 3306
database_name: gae-test-project
database_user: root
database_password: secretpassword
config.yml (отрывок)
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
unix_socket: '/cloudsql/restof:europe-west3:connectionname'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
composer.json (отрывок)
"require": {
"php": "^7.1",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"incenteev/composer-parameter-handler": "^2.0",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^3.0.2",
"sensio/generator-bundle": "^3.0",
"symfony/monolog-bundle": "^3.1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^3.0"
},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-install-cmd": [
"chmod -R ug+w $APP_DIR/var",
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts"
]
},
app.yml (полный)
service: default
runtime: php
env: flex
runtime_config:
document_root: web
env_variables:
SYMFONY_ENV: prod
MYSQL_USER: root
MYSQL_PASSWORD: secretpassword
MYSQL_DSN: mysql:unix_socket=/cloudsql/restof:europe-west3:connectionname;dbname=gae-test-project
WHITELIST_FUNCTIONS: libxml_disable_entity_loader
#[START cloudsql_settings]
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
cloud_sql_instances: "restof:europe-west3:connectionname"
#[END cloudsql_settings]
Имейте в виду, что я добавил или изменил только те строки, которые мне советовали примеры и документация.
Что я делаю не так? Оба примера работают нормально, проект Symfony, подключающийся к БД через работающий cloud_sql_proxy, работает нормально, когда я пытаюсь получить доктрину для подключения к CloudSQL изнутри GAEflex, я не получаю соединения.
Может ли кто-нибудь заметить ошибку новичков, которую я мог совершить? У кого-нибудь была такая проблема и, может быть, я забыл ту или иную настройку с GAE или CloudSQL? Может ли кто-нибудь указать мне на репозиторий работающего проекта Symfony3 / Doctrine, который использует GAEFlex и CloudSQL?
Я застрял, так как не могу найти обновленную документацию о том, как запустить эту, довольно очевидную комбинацию. Любая помощь приветствуется!
Приветствия / Карстен