无法从应用程序引擎应用程序(灵活环境)PHP连接到MySQL第二代实例

无法从应用程序引擎应用程序(灵活环境)PHP连接到MySQL第二代实例,php,mysql,google-app-engine,pdo,Php,Mysql,Google App Engine,Pdo,我能够从本地服务器(使用代理)连接到谷歌云托管的mySQL数据库,但我无法从谷歌应用程序引擎进行连接。appengine实例和googlecloudmysql实例位于同一个区域,但我已经读到,这对于第二代mySQL来说应该不会有任何问题 从本地服务器,我可以连接并发送一个简单的命令来操作数据库 当我将代码部署到Google App Engine时,它会在以下命令下失败: $pdo = new PDO($this->dsn, $this->user, $this->passwor

我能够从本地服务器(使用代理)连接到谷歌云托管的mySQL数据库,但我无法从谷歌应用程序引擎进行连接。appengine实例和googlecloudmysql实例位于同一个区域,但我已经读到,这对于第二代mySQL来说应该不会有任何问题

从本地服务器,我可以连接并发送一个简单的命令来操作数据库

当我将代码部署到Google App Engine时,它会在以下命令下失败:

$pdo = new PDO($this->dsn, $this->user, $this->password);
其中:

$此dsn定义为:

mysql:host=127.0.0.1;port=3306;unix_socket=/cloudsql/<Project ID>:<Location>:<Instance>;dbname=<Database Name>"
mysql:host=127.0.0.1;端口=3306;unix_socket=/cloudsql/:;数据库名=”
用户和密码的定义和验证与实例连接名称相同,因为我能够从本地服务器登录并成功操作mySQL数据库。上面分隔符中的文本是PHP代码中使用的值的描述(替换为混淆敏感信息)

我尝试捕获此命令的任何异常,如下所示:

try {
    $pdo = new PDO($this->dsn, $this->user, $this->password);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
试试看{
$pdo=新pdo($this->dsn,$this->user,$this->password);
}捕获(PDO$e){
打印“错误!:”$e->getMessage()。“
”; 模具(); }
遗憾的是,我没有在web客户端上打印任何消息,只是一般的浏览器异常输出。关于如何导航到Google App Engine实例化的VM以查看syslog的任何提示或调试服务器(Google Cloud)代码的其他提示也将不胜感激

我的app.yaml如下所示:

runtime: php
env: flex

runtime_config:
  document_root: web

beta_settings:
   cloud_sql_instances: "<Project ID>:<Location>:<Instance>"
runtime:php
环境:柔性
运行时配置:
文档根:web
beta_设置:
云计算sql实例::“
同样,使用云代理脚本在本地服务器上可以很好地实现这一切,但部署到Google cloud时就无法发挥作用。我仔细阅读了php书架教程,然后剥离了大部分代码以达到这一目的——始终通过在本地服务器上测试来验证其合理性


谢谢。

我认为您应该使用以下dsn:

mysql:unix_socket=/cloudsql/<Project ID>:<Location>:<Instance>;dbname=<Database Name>
mysql:unix_socket=/cloudsql/:;dbname=

BTW-我能够登录到虚拟机的一个实例,我确实看到了在/cloudsql下创建的一个具有适当格式的套接字。系统日志显示了几个看起来很有希望的“GAE”环境变量。我找不到错误消息,但我不太清楚我在寻找什么。谢谢。我以不同的方式解决了这个问题。我从标准的“应用程序引擎流程”,使用此版本连接到mySQL服务器没有问题。谢谢