【问题标题】:Configure Wordpress on Azure Cloud Service to connect to Azure MySQL over SSL在 Azure 云服务上配置 Wordpress 以通过 SSL 连接到 Azure MySQL
【发布时间】:2018-06-06 04:41:06
【问题描述】:

我们在云服务上的主要 .NET 解决方案的子文件夹中运行 Wordpress。我们已将 MySQL 从 CloudDB 移至 Azure MySQL,但只有在我们将“强制 SSL 连接”设置为禁用时才会连接。

Wordpress wp-config.php 有以下内容

define('DB_SSL', true);

我认为问题是我们需要传递证书,但我不清楚如何在 Wordpress 中设置它,以便在通过 SSL 连接时传递。

【问题讨论】:

    标签: php mysql wordpress azure ssl


    【解决方案1】:

    这就是我所做的:

    1. Obtain SSL certificate 并将证书文件保存到我的 Wordpress 项目的根目录中。

    2. 将以下内容添加到wp-config.php

      define('DB_SSL', true);
      
    3. 将此添加到我的wp-includes/wp-db.php 中的函数db_connect()。必须在mysqli_real_connect()之前调用:

      // Just add this line
      mysqli_ssl_set($this->dbh, NULL, NULL, ABSPATH . 'BaltimoreCyberTrustRoot.crt.pem', NULL, NULL); 
      
      if ( WP_DEBUG ) {
          mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
      } else {
          @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
      }
      

    解决方案似乎有点脏,但对我有用。

    【讨论】:

    • 不建议修改WP的核心文件。 WP更新后会发生什么?我们每次升级 WP 时都需要这样做吗?
    • 是的,我们确实需要。但是您知道任何其他解决方案而不更改 wp-db.php 文件来完成这项工作吗?
    • 我同意@Nitesh,但看不到任何替代方案。正如 Aaron 所说,该解决方案有点脏,因为它可以被覆盖,但它至少解决了所提出的问题。
    【解决方案2】:

    我发现将 Azure mySQL 数据库服务器与 Wordpress 容器映像结合使用时,解决方案要简单得多。如果您使用的是 VPS,这可能不适用。

    【讨论】:

    • 在我的情况下它没有添加 define('MYSQL_SSL_CA_PATH','/');
    【解决方案3】:

    这将通过将这些行添加到 wp_config.php 来解决问题

    define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL);
    define(‘MYSQL_SSL_CA’, getenv(‘MYSQL_SSL_CA’));
    define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
    

    【讨论】:

    • 感谢 Anurag,我会试试这个,虽然它现在在我的待办事项列表上还有很长的路要走,因此回复缓慢(道歉)。感谢您的意见,并会试一试。
    猜你喜欢
    • 1970-01-01
    • 2012-07-17
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2010-09-24
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多