0

我正在尝试在 GCP“计算引擎”VM 上设置我的 CakePHP 3.8 项目。

我已将 app.php 设置为使用以下数据库配置:

'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'user',
'password' => 'password',
'database' => 'dbname',
'prefix' => '',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'log' => false,
'flags' => [
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET @@SESSION.sql_mode='';",
    // uncomment below for use with Google Cloud SQL
    PDO::MYSQL_ATTR_SSL_KEY  => CONFIG.'ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT => CONFIG.'ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA   => CONFIG.'ssl/server-ca.pem',
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
],
'cacheMetadata' => true,
'log' => false,

当我尝试运行迁移时,我的问题发生了。该站点在上述配置下运行良好,但是,如果我运行

$> php bin/cake.php migrations migrate

我收到一系列错误,说它无法连接,user@host 的访问被拒绝。

如果我添加

'ssl_key' => CONFIG .'ssl/client-key.pem',
'ssl_cert' => CONFIG . 'ssl/client-cert.pem',
'ssl_ca' => CONFIG . 'ssl/server-ca.pem',

我收到一个错误:

原因:[PDOException] PDO::__construct(): Peer certificate CN=`gcpname:gcpserver' 与 /var/www/mydomain.com/vendor/robmorgan/phinx/src 中的预期 CN=`111.111.111.111' 不匹配/Phinx/Db/Adapter/PdoAdapter.php 在第 79 行

4

1 回答 1

0

我猜这是因为迁移插件仍然没有将flagsor自定义mysql_attr_*选项传递给 Phinx 连接配置,请参阅此问题:

https://github.com/cakephp/migrations/issues/374

除了添加对标志/属性选项的支持或直接使用 Phinx(即没有 Migrations 插件)之外,我认为这里没有什么可以做的。

我已经推送了一个 PR,它将添加对驱动程序特定标志的支持,您可能想尝试一下并评论该问题或 PR 是否适合您(它适用于 CakePHP 4.x (Migrations 3.x),如果它被接受,我会将它反向移植到 CakePHP 3.x (Migrations 2.x):

https://github.com/cakephp/migrations/pull/478

于 2020-11-04T19:23:36.347 回答