【发布时间】:2018-07-11 14:32:36
【问题描述】:
我使用 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 代码(我从谷歌书架教程中复制了它,因为我对这些东西完全陌生..)
<?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 数据的典型查询,那将非常有帮助。
【问题讨论】:
-
您能否通过添加部署后收到的确切错误来编辑您的帖子?
-
顺便说一句:我验证了我的 ip 并激活了所有 API
-
关注 this example,这正是 App Engine Flexible php - CloudSQL。你有一个
app.yaml和一个有效的查询。您是否在收到 500 错误后立即运行命令gcloud app deploy [YAML FILE]?或者部署成功,但是当您对应用程序执行 HTTP 请求时,它会响应 500(一直)? -
我按照示例并尝试部署示例应用程序。但它仍然无法正常工作.. 我可以部署应用程序,但是当我执行 http 请求时,它会响应 500..
-
您确定标题方向错误吗?您怎么知道是与 Cloud SQL 的连接失败了?您拥有的唯一信息是
HTTP-500 error: sampleproject.appspot.com is currently unable to handle this request。你能分享来自Stackdriver logging 的日志条目吗?反映失败请求的一种。
标签: php mysql google-app-engine google-cloud-platform google-cloud-sql