我使用谷歌的“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数据的典型查询,那将非常有用。
答案 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]