我正在尝试在Google App Engine灵活环境中部署一个测试PHP项目。
我的app.yaml看起来像这样:
*
runtime: php
env: flex
service: testphpflex
manual_scaling:
instances: 1
#[START cloudsql_settings]
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
cloud_sql_instances: "my-first-project:us-central1:tempdb"
#[END cloudsql_settings]
*
composer.json 看起来像这样:
{
"require": {
"silex/silex": "^1.3",
"php": "5.6.*",
"google/apiclient": "^2.0"
},
"require-dev": {
"google/cloud-tools": "^0.6",
"paragonie/random_compat": "^2.0",
"phpunit/phpunit": "~4"
}
}
我的示例代码如下所示:
<?php
$conn = mysql_connect('unix_socket:/cloudsql/my-first-project:us-central1:tempdb',
'username',
'password'
);
echo "<br><br/>connection done";
if(!$conn)
{
die('Connection Failed'.mysql_error());
}
else
{
die('Connection successful');
}
?>
但是,我无法连接。怎么了?
我的假设是没有启用Google Cloud SQL API。
转到以下链接,查看它是否已启用。如果没有,请启用它。
https://console.cloud.google.com/apis/api/sqladmin.googleapis.com/overview?project=_
然后尝试重新部署应用(遗憾的是,您需要再次部署它(。如果是这种情况,那就是在 App Engine 上连接到第二代云 SQL 灵活的 PHP 7.0 - 缺少套接字
Google Cloud Support 告诉我mysql_connect已被弃用。自 5.5 以来,它在 PHP 中已被弃用,因此不支持此功能。所以以上是不支持的。
我想我明白你为什么会得到错误。
您应该使用:
mysql_connect(':/cloudsql/my-first-project:us-central1:tempdb',
或
mysql_connect('localhost:/cloudsql/my-first-project:us-central1:tempdb',
根据手册http://php.net/manual/en/function.mysql-connect.php