【发布时间】:2019-12-30 05:15:12
【问题描述】:
我正在尝试在 Google App Engine 标准环境中运行 Wordpress。我已经为 MySQL 第二代实例配置了 Cloud SQL,并且可以使用 Cloud SQL 代理通过以下命令访问它:
cloud_sql_proxy -instances=my_project_id:us-central1:my_project=tcp:3306
wp-config.php 文件:
if (isset($_SERVER['GAE_ENV'])) {
define('DB_HOST', ':/cloudsql/my_project_id:us-central1:my_project');
} else {
define('DB_HOST', '127.0.0.1');
}
最后,我使用这个连接到数据库:
$dbConn = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD) or die (mysqli_error($dbConn));
mysqli_select_db($dbConn, DB_NAME) or die(mysqli_error($dbConn));
此设置可在本地开发环境(即 Cloud Shell)中完美运行。该网站运行,我能够查询数据库和插入记录等。当我使用google app deploy 部署到my_project_id.appspot.com 时出现问题。该网站运行,但当我尝试查询数据库时收到此错误:
Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /srv/wp-content/themes/mytheme/system/db.php on line 14
第14行是$dbConn = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD)
所以我猜mysqli一定不喜欢指定DB_HOST的格式,即:/cloudsql/my_project_id:us-central1:my_project。
在Community Tutorial 中有一个示例代码,它使用 unix 套接字和 PDO 连接到数据库。我不知道我是否应该将这些行添加到 app.yaml 文件以及使用这个不同连接字符串的人。
env_variables:
MYSQL_DSN: mysql:unix_socket=/cloudsql/my_project_id:us-central1:my_project;dbname=my_dbname
MYSQL_USER: username
MYSQL_PASSWORD: password
对于这个冗长的问题,我深表歉意,但我想提供尽可能多的信息。有人知道我做错了什么吗?谢谢。
【问题讨论】:
标签: mysql wordpress google-app-engine google-cloud-sql