Wir führen WordPress in einem Unterordner unserer .NET-Hauptlösung auf einem Cloud-Dienst aus. Wir haben unser MySQL von CloudDB zu Azure MySQL verschoben, es wird jedoch nur eine Verbindung hergestellt, wenn wir „SSL-Verbindung erzwingen“ auf deaktiviert setzen.
Die WordPress wp-config.php hat folgendes
define('DB_SSL', true);
Ich nehme an, das Problem ist, dass wir ein Zertifikat übergeben müssen, aber mir ist nicht klar, wie wir dies in WordPress so einstellen können, dass es bei der Verbindung über SSL übergeben wird.
Folgendes habe ich getan:
-
Besorgen Sie sich ein SSL-Zertifikat und speichern Sie die Zertifikatsdatei im Stammverzeichnis meines WordPress-Projekts.
-
Fügen Sie Folgendes hinzu wp-config.php
:
define('DB_SSL', true);
-
Fügen Sie dies der Funktion hinzu db_connect()
in meinem wp-includes/wp-db.php
. Es muss vorher aufgerufen werden 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 );
}
Die Lösung scheint ein bisschen schmutzig zu sein, aber sie funktioniert für mich.
Dies wird das Problem lösen, indem diese Zeilen zu wp_config.php hinzugefügt werden
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 );
Ich fand die Lösung viel einfacher, wenn ich einen Azure mySQL-Datenbankserver in Verbindung mit einem WordPress-Container-Image verwende. Wenn Sie ein VPS verwenden, trifft dies möglicherweise nicht zu.
- Laden Sie die BaltimoreCyberTrustRoot.crt.pem herunter, auf die hier verwiesen wird: https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl
- Legen Sie die Datei im Stammverzeichnis Ihrer WordPress-Installation ab
- Füge diese beiden Variablen in wp-config hinzu:
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
define('MYSQL_SSL_CA_PATH',"https://stackoverflow.com/");
Die Lösungen, die für mich funktionieren, fügen Sie zu wp-config.php hinzu:
PHP7.x
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL |
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));
PHP5.x
define('MYSQL_CLIENT_FLAGS', MYSQL_CLIENT_SSL);
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));
Quelle: https://jkudo.medium.com/how-to-connection-from-wordpress-installed-on-azure-app-service-to-azure-database-for-mysql-via-2b2c37c4a7de
13818000cookie-checkKonfigurieren Sie WordPress auf Azure Cloud Service, um eine Verbindung mit Azure MySQL über SSL herzustellenyes