与Cloud SQL的App Engine(PHP)连接失败

时间:2018-02-01 09:55:23

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

我使用谷歌的“hello world”app引擎示例的环境来创建我自己的php应用程序。然后我将现有的app.yaml文件配置为:

runtime: php55
api_version: 1

handlers:
- url: /
  script: index.php

env_variables:
    MYSQL_DSN: mysql:dbname=sampledb;unix_socket=/cloudsql/sampleproject:europe-west3:sampleinstance
    MYSQL_USER: root
    MYSQL_PASSWORD: admin

我的index.php是一个典型的登录页面。我想从我的云sql加载用户数据来检查是否允许用户进入下一页。下一页是包含公司数据的仪表板。我还想从我的云sql数据库加载这些数据。

这是我的PHP代码来读取数据(我从谷歌书架教程复制它,因为我完全是这些东西的新东西..)

  <?php
    $dsn = getenv('MYSQL_DSN');
    $user = getenv('MYSQL_USER');
    $password = getenv('MYSQL_PASSWORD');
    if (!isset($dsn; $user) || false=== $password) {
      throw new Exception('Set MYSQL_DSN');
      }
    $db = new PDO($dsn, $user, $password);

    $statement = $db->prepare("SELECT clicks from display_inbox");
    $statement->execute();
    $all = $statement->fetchAll();

    foreach ($all as $data) {
      echo $data["clicks"], "<br>";
    }
  ?>

这不是一个特定的查询,我只是想检查连接。 部署我的应用程序后,我得到以下结果:

HTTP-500错误:sampleproject.appspot.com目前无法处理此请求。

如果这是我的app.yaml或我的PHP代码,我根本不知道。如果有人拥有app.yaml文件的示例代码和读取云sql数据的典型查询,那将非常有用。

1 个答案:

答案 0 :(得分:0)

您的app.yaml和index.php文件中存在一些语法错误

试试这个:

的app.yaml:

def switch(array):
    return array.apply(lambda: 0 if x<0 else x)

的index.php:

runtime: php55
api_version: 1
threadsafe: true

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

# [START env]    
env_variables:
    MYSQL_DSN: mysql:unix_socket=/cloudsql/sampleproject:europe-west3:sampleinstance;dbname=sampledb
    MYSQL_USER: root
    MYSQL_PASSWORD: admin
# [END env]