WordPressバージョン4.9.2でエラー

最新にしたら、以下のようなエラーがヘッダーあたりにでるようになった。これは見苦しいのでなんとかしたい。

Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 4 in {{install_home}}/wp-includes/wp-db.php on line 1657

Warning: Cannot modify header information – headers already sent by (output started at {{install_home}}/wp-includes/wp-db.php:1657) in {{install_home}}/wp-admin/includes/misc.php on line 1114

※実際は{{install_home}}はwordpressインストールディレクトリが表示されている。

エラーだけみると正規表現の書き方がまずいらしい。

調べてみると?<XXXX>を?P<XXXX>にすればいいそうだ。PHPを5.2.2以上にすれば解決するようだが、暫定対応はしないと。

wp-includes/wp-db.phpの1649行目と1653行目のところを上の形式に変えてみた。結果は?P<host>と?P<port>のような感じ。
これで、トップページや記事を2、3見たり、この投稿をしたりしてみたが、今のところ大丈夫なようだ。

// We need to check for an IPv6 address first.
// An IPv6 address will always contain at least two colons.
if ( substr_count( $host, ':' ) > 1 ) {
	$pattern = '#^(?:\[)?(?P<host>[0-9a-fA-F:]+)(?:\]:(?P<port>[\d]+))?#';
	$is_ipv6 = true;
} else {
	// We seem to be dealing with an IPv4 address.
	$pattern = '#^(?P<host>[^:/]*)(?::(?P<port>[\d]+))?#';
}

$matches = array();
$result = preg_match( $pattern, $host, $matches );

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください