我使用 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/