ローカルの WordPress を 3.9 にしてから、記事を更新してからページ遷移しなくなりました。原因は簡単なことだったのですが、いろいろ大変だったのでメモとして残しておきます。
MAMP のアップデート
サーバー上の WordPress は普通に動いているから、ローカルの問題だろうと、古いバージョンの MAMP を使っていたので最新版にしました。 1.9.6 から 3.0.5 にです。
MAMP のアップデートの方法は下記のようです。
- アプリケーションフォルダにある今使用している MAMP を「 MAMP_old 」のようにリネイムする。
- 新しい MAMP をインストーラーからインストール。
- 「 MAMP_old 」内の「 db 」フォルダを新しい MAMP に上書き。
(「 htdocs 」フォルダがデフォルトの場合はそれも上書きする。)
これで MAMP を立ち上げればいいらしいのだけれど、 Apache は起ち上がるけれど、 MySQL は起動しません。
インストールした MAMP を削除したり、いろいろしたのですが、どれもダメで、バージョン 2 系を飛ばしているのが問題かもと思って、 MAMP 2.1.4 をダウンロードしてきてアップグレードしてみました。そしたら今度は MySQL は起動するけれど、 Apache が起動しません。
2.1.4 をリネイムして残した状態で、今度は 3.0.5 をインストール。「 db 」フォルダを上書きしてたら、 MySQL は起動するけれど、 Apache が起動しない状態になりました。よくわからないので、 Mac を一度再起動したら、 Apche も起ち上がりました。
ローカルの WordPress にログインできない
ようやく起ち上がった WordPress にログインしようと思ったら、ログイン画面にエラーが出てログインできません。
「エラー : 予期しない出力により Cookies がブロックされました。ヘルプが必要な場合はこちらのドキュメンテーションを読むか、サポートフォーラムをご利用ください。」
英語のフォーラムでは話題になっているらしく、下記を読むと、このエラーは 3.9 系で出るようになり、プラグインかテーマが原因みたいです。
→ WordPress.org Forums : Unable to Log In – Cookies Are Blocked Due To Unexpected Output?
FTP 経由でプラグインまたはテーマをリネイムすることでログインできるようになるみたいです。(ファイル名の頭にアンダーバーなどをつけるとよい。)
本番サーバーでは正常にログインできているので、プラグインではなくテーマが原因だろう、と検討をつけ、テーマをリネイムしてみると、エラーが消えました。テーマ内の function.php に原因があるので、リネイムを元に戻しバックアップしてあった古いバージョンに差し替えてみたらエラーはでません。なので古いバージョンと新しいバージョンの function.php の差分を取って、 1 つ 1 つ置き換えていきましたが、エラーはでませんでした。つまり書き換えたコードがおかしかったわけではなかったのです。
で、長々と書きましたが何が原因だったか、というと、ファイル終わりの ?>
の後に改行とスペースがあったことが原因でした。先日ファイルの最後ほうにコードを書き加えたときに、スペースと改行を入れてしまったのです。
つまり WordPress のページ遷移がおかしかったのも、ファイル文末のスペースと改行のせいで、 MAMP をアップデートする必要はなかった、ということです。スペースと改行で半日潰してしまいました。 PHP のファイル終わりの ?>
は書かない方がいいというのはこういうエラーを防ぐためなんですね。