php - 在同一项目中使用 mysqli 将 App Engine 应用程序连接到 Google SQL 实例

标签 php mysql google-app-engine google-cloud-platform google-cloud-sql

我已阅读类似的问题并尝试了他们所说的内容,但我无法让我的 App Engine 应用连接到我的 Cloud SQL 实例。

以下是我发现的应该是正确的:

index.php

$servername = null;
$username = "root";
$password = "rootPassword";
$database = "NewApp";
$port = null;
$socket = "/cloudsql/newapp-edc:us-central1:newapp0";

$connection = new mysqli($servername,
                $username,
                $password,
                $database,
                $port,
                $socket);

app.yaml

runtime: php72

entrypoint: serve index.php

env_variables:
    # Replace USER, PASSWORD, DATABASE, and CONNECTION_NAME with the
    # values obtained when configuring your Cloud SQL instance.
    MYSQL_USER: root
    MYSQL_PASSWORD: rootPassword
    MYSQL_DSN: mysql:dbname=NewApp;unix_socket=/cloudsql/newapp-edc:us-central1:newapp0

# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
    cloud_sql_instances: "newapp-edc:us-central1:newapp0"

我已经浏览了所有类似的问题和答案以及所有相关的 Google 文档,但我找不到答案。

当前方法导致“连接被拒绝”,我认为,这意味着我的套接字与之前所说的一样正确,“没有这样的文件或目录 ”。一切似乎都是正确的,我拥有同一项目中所有应用的权限,并且 App Engine 应用和 Cloud SQL 实例位于同一项目中,因此这不应该是问题。

最佳答案

正如本文中提到的类似post ,如果您想将 Google App Engine 连接到 Cloud SQL,则需要启用 Cloud SQL 代理,因为 Google App Engine 通过代理从 Google 服务器内部连接到您的 Cloud SQL 实例。

如果您不想使用 Cloud SQL 代理,则需要从 Cloud SQL 实例授权您的 IP,如 here. 所示。

我希望这会有所帮助。

关于php - 在同一项目中使用 mysqli 将 App Engine 应用程序连接到 Google SQL 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515031/

相关文章:

php - 如果任何单词的起始字符和结束字符都是?,那么两者都是?应该在 PHP 中删除

PHP动态数组显示 double

javascript - 如何减少 Google 登录所需的权限

python - 弹出警报的 GAE/Python 最佳实践?

java - 阻止 App Engine 记录客户端文件请求

PHP - 遍历多个表并填充多维数组

php - MYSQL 一对一关系

php - Helper 与 Model 交互可以吗?

sql - 给定一个列名,我如何找到数据库中的哪些表包含该列?

mysql - ECONNRESET 错误导致 NodeJS 应用程序崩溃