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

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

我使用 google 的“hello world”应用程序引擎示例环境来创建我自己的 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 代码(我从 google 书架教程中复制了它,因为我对这些东西完全陌生..)

  <?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 数据的典型查询,那将非常有帮助。

最佳答案

你的 app.yaml 和 index.php 文件中有一些语法错误

试试这个:

应用程序.yaml:

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]

索引.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>";
    }
  ?>

关于php - App Engine (PHP) 与 Cloud SQL 的连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48559833/

相关文章:

php - 消息 '' 上指定的 SOAP 操作与 HTTP SOAP 操作不匹配,

php - 获取括号后的文本

PHP 包含数组警告

mysql - 错误 #1159 与 MySQL FEDERATED 表和一种查询

mysql 使用序列中的下一个值作为列的默认值

java - 云端点不尊重 Jackson 注释

python - 使用 `django` 和 `css` 进行 App 引擎验证

Windows 上的 PHP/MySQLi : inserts into a MySQL innoDB Table increases the AUTO_INCREMENT column by 2

python - SQLAlchemy 可以与 Google Cloud SQL 一起使用吗?

php - 是否有适用于 Windows 的简单 php shell?