我是 Google Cloud 的新员工,需要帮助将标准环境中的 PHP App Engine 与 Google Cloud SQL (MySQL) 连接起来。 它们位于同一区域,并且 MySQL Workbench 的连接有效。在工作台中,我使用 Google SQL 实例的公共(public) IP。 但 MySQLi 给我错误:“连接被拒绝”。我也用 PDO 尝试过,它给了我同样的错误。
这是我的 PHP 代码:
<?php
$host = '127.0.0.1';
$user = 'root';
$dbpassword = 'password';
$database = 'database';
$port = 3306;
$mysqli = new mysqli($host, $user, $dbpassword, $database, $port);
if ($mysqli->connect_errno) {
die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}
这就是 app.yaml:
runtime: php72
handlers:
- url: /css
static_dir: css
- url: /src
static_dir: src
- url: /js
static_dir: js
beta_settings:
cloud_sql_instances: "project:europe-west3:instanceid=tcp:3306"
我希望任何人都可以帮助我。 谢谢。
编辑: 我也尝试过:
$mysqli = new mysqli(null, $user, $dbpassword, $database, null, "/cloudsql/{connectionstring}");
if ($mysqli->connect_errno) {
die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}
它给了我:“没有这样的文件或目录”
最佳答案
此问题已得到解决 here ,你可以引用最后一个答案,其中进一步说明了如何连接。
您需要确保sqladmin API启用后,在项目根级别添加文件 php.ini(与 app.yaml 相同)并添加以下条目:
Extension = “mysqli.so”
添加一些环境变量(数据源名称、MySQL用户和密码)
MYSQL_DSN: mysql:unix_socket=/cloudsql/datahouse;dbname=mydatabase
MYSQL_USER: root
MYSQL_PASSWORD: 'mypassword'
最后,连接字符串的名称应该是“/cloudsql/project-id”;
$instance_name = "/cloudsql/YOUR_PROJECT_ID_WITHOUT_DB_NAME";
$mysqli = mysqli_connect(null, YOUR_DB_USER ,YOUR_DB_PASS, 'DB_NAME',null,$instance_name);
请告诉我是否可以连接。
关于php - 使用 PHP MySQLi 从 Google Cloud App Engine 连接到 Cloud SQL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57876899/