无法从 google App Engine 柔性环境 PHP 项目连接到云 sql 实例

Cannot connect to cloud sql instance from google app engine flexible environment PHP project

我正在尝试在 google App Engine 柔性环境中部署一个测试 php 项目。

我的 app.yaml 看起来像这样:

*

runtime: php
env: flex
service: testphpflex
manual_scaling:
  instances: 1
#[START cloudsql_settings]
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
    cloud_sql_instances: "my-first-project:us-central1:tempdb"
#[END cloudsql_settings]

*

composer.json 看起来像这样:

{
    "require": {
        "silex/silex": "^1.3",
        "php": "5.6.*",
        "google/apiclient": "^2.0"

    },
    "require-dev": {
        "google/cloud-tools": "^0.6",
        "paragonie/random_compat": "^2.0",
        "phpunit/phpunit": "~4"
    }
}

我的示例代码如下所示:

<?php
 $conn = mysql_connect('unix_socket:/cloudsql/my-first-project:us-central1:tempdb',
         'username', 
         'password'
     );

     echo "<br><br/>connection done";
if(!$conn)
{
die('Connection Failed'.mysql_error());
}
else 
{
die('Connection successful');
}

?>

但是,我无法连接。怎么了?

我的假设是 Google Cloud SQL API 未启用。

转到以下 link 并查看它是否已启用。如果没有就启用它。

https://console.cloud.google.com/apis/api/sqladmin.googleapis.com/overview?project=_

然后尝试重新部署该应用程序(不幸的是,您需要重新部署它)。如果是这种情况,那就是

的重复

我想我明白你为什么会收到这个错误。

你应该使用:

mysql_connect(':/cloudsql/my-first-project:us-central1:tempdb',

mysql_connect('localhost:/cloudsql/my-first-project:us-central1:tempdb',

根据手册 http://php.net/manual/en/function.mysql-connect.php

Google 云支持告诉我 mysql_connect 已弃用。自 5.5 以来,它已在 PHP 中弃用,因此不支持此功能。所以以上不支持。