【问题标题】:Cannot connect to cloud sql instance from google app engine flexible environment PHP project无法从谷歌应用引擎柔性环境PHP项目连接到云sql实例
【发布时间】:2017-05-12 06:14:20
【问题描述】:

我正在尝试在谷歌应用引擎柔性环境上部署一个测试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');
}

?>

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

【问题讨论】:

    标签: php google-app-engine google-cloud-sql


    【解决方案1】:

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

    【讨论】:

    • 哇。收到弃用警告而不是带有模糊消息的完全失败会很酷。
    【解决方案2】:

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

    转到以下链接,看看它是否已启用。如果没有,请启用它。

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

    然后尝试重新部署应用程序(不幸的是,您需要再次部署它)。如果是这种情况,那就是Connecting to 2nd gen Cloud SQL on App Engine flexible PHP 7.0 - missing socket的重复

    【讨论】:

    • API 已启用。我在其他基于 java 的应用引擎项目中使用相同的云 sql 实例,我没有问题。
    • 什么时候发生的?本周我们遇到了有关云 sql 代理的问题,但现在已修复。重新部署可能会解决它。
    • 不走运。仍然得到同样的错误——没有这样的文件或目录
    • 我在上面添加了正确答案。这个问题应该结束了。
    【解决方案3】:

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

    你应该使用:

    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

    【讨论】:

    • 谷歌云支持告诉我 mysql_connect 已被弃用。自 5.5 以来它已在 PHP 中被弃用,因此不支持此功能。我们最终决定迁移到 PDO。非常感谢您的帮助。
    • 好的,您可以将此问题标记为已解决或已关闭吗?
    • 转换为 PDO 后,它工作正常吗? ?我也有同样的问题?
    • 发生这种情况是因为您的配置错误。 mysql_connect 和 PDO 都应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多