Почему Eloquent в моем приложении App Engine не может подключиться к моему экземпляру Google SQL? - PullRequest
0 голосов
/ 07 сентября 2018

Как ни странно, я могу подключиться к своему экземпляру Google SQL из инструмента базы данных PHPStorm, просто не могу подключиться локально при развертывании.

А когда я развиваюсь локально - мое приложение нормально подключается к моему локальному экземпляру стека (docker), используя указанные ниже переменные среды.

Вот мой app.yaml

runtime: php72
api_version: 1

handlers:
- url: /.*
  script: public/index.php

env_variables:
  MYSQL_DSN: "mysql:unix_socket=/cloudsql/project:location:sql-instance;dbname=databaseName"
  MYSQL_USER: "username"
  MYSQL_PASSWORD: "password"

runtime_config:
  enable_stackdriver_integration: true

А вот как я инициализирую это в Eloquent / Illuminate.

    use Illuminate\Database\Capsule\Manager;

    $db = [];
    if(getenv("MYSQL_DSN")){
        $db = [
            'driver' => 'mysql',
            'dsn' => getenv("MYSQL_DSN"),
            'username' => getenv("MYSQL_USER"),
            'password' => getenv("MYSQL_PASSWORD"),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ];
    } else if(getenv("MYSQL_HOST")){
        $db = [
            'driver' => 'mysql',
            'host' => getenv("MYSQL_HOST"),
            'database' => getenv("MYSQL_DATABASE"),
            'username' => getenv("MYSQL_USER"),
            'password' => getenv("MYSQL_PASSWORD"),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ];
    }

    $settings = [
            // Slim Settings
            'determineRouteBeforeAppMiddleware' => false,
            'displayErrorDetails' => true,
            'db' => $db
        ];

    $container = $this->getContainer();
    $capsule = new Manager;
    $capsule->addConnection($settings['db']);

    $capsule->setAsGlobal();
    $capsule->bootEloquent();

1 Ответ

0 голосов
/ 08 сентября 2018

Разрешает ли ваш экземпляр Cloud SQL подключения, с которых вы тестируете? Проверьте авторизованные сети на вкладке авторизации на странице экземпляра SQL в консоли GCP .

Если вы не уверены, попробуйте добавить 0.0.0.0/0 для проверки разрешения всех подключений IPv4. Отключите позже, чтобы предотвратить несанкционированные прямые подключения к БД.

...