Google App Engine FlexoでSymfony 3プロジェクトを取得できません。Google Cloud SQL(MySQL、2 Generation)に接続できません。これらの例でGoogle App EngineのSymfony3 FlexibleがGoogle Cloud SQLに接続できませんMySQL
https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/appengine/flexible/symfony
をオフに開始
は、私はGoogle App EngineとGoogle Cloud SQL(MySQLの、2世代)、ヨーロッパ・west3の両方を作成しました。 GAEでこれらのサンプルをテストしたところ、どちらもうまく動作しました。
その後、私は続けて、非常にシンプルな新しいSymfony 3.3プロジェクトを最初から作成しました。 作成後(ウェルカム画面と「あなたのアプリケーションはすぐに準備完了です:あなたは/ app /」で作業を開始できます)私はそれを私のGAEflexにデプロイしました。
その後、私は単純なエンティティとそのためのコントローラを追加しました。 これはうまくいきます.Googlesのcloud_sql_proxyとSymfonyの組み込みWebサーバー「php bin/console server:run」を起動するときにはうまくいきます。 Cloud SQLとの間で読み書きができます。
私が何を試しても、私はいつも "symfony-scripts" "post-install-cmd"のコマンドのうちの1つ(または私の実験状態に応じて)に "Connection Refused"私の作曲家.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
作曲。 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]
は、私が例やドキュメントがに私に助言のみの行を追加または変更されたことに注意してください。
何が間違っていますか? 例はうまくいきますが、動作しているcloud_sql_proxyを通してDBに接続しているSymfonyプロジェクトは正常に動作します。私はdoctrineをGAEflex内からCloudSQLに接続しようとすると接続しません。
私が作ったかもしれないルーキーの間違いは誰にも見えますか? 誰かがこの問題を抱えていましたか、GAEやCloudSQLを使用して設定を忘れてしまったことがありますか? GAEFlexとCloudSQLを使用しているSymfony3/Doctrineプロジェクトのリポジトリに私を指摘できますか?
これを取得する方法、むしろ明白な組み合わせを実行する方法についての最新のドキュメントは見つかりませんでした。 ご迷惑をおかけして申し訳ございません。
乾杯/ Carsten
私はSymfonyに慣れていませんが、config.ymlからホスト/ポート行を削除するとどうなりますか?エラーメッセージ(「Connection refused 」)は、UNIXソケットを使用するのではなく、TCPを介して接続しようとしていることを示しています。 – Vadim
あなたはTCPへの "Connection Refused"ヒントについては正しいですが、 "SQLSTATE [HY000] [2002]そのようなファイルやディレクトリはありません"と言います。今私はこれについて数日間熟考していると言いましたか?私が例を見つけることができなかった後、私は思っていたすべてのことを無理なく試してみました。だから私は誰かが間違いなく私の間違いや作品を指し示すことができるかどうか尋ねたのです。 –
Cloud SQL APIを有効にしたことを再度確認できますか?始める前にここでポイント2を参照してください:https://cloud.google.com/appengine/docs/flexible/php/using-cloud-sql – Vadim