最新にしたら、以下のようなエラーがヘッダーあたりにでるようになった。これは見苦しいのでなんとかしたい。
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 );