連載第84回
2014年7月13日
WordPressが外部に接続出来無い(WP HTTP Error など)

 前回はflfl.meサイト公開後の課題をリストアップしました。その中で一番に気になるのは何と言っても「WordPressダッシュボードが外部と接続出来無い(プラグインが検索出来無い)」というトラブル。今のところ、読者によるサイト閲覧には問題ないようだけれども、サイトを管理する者としては何だか気分が落ち着きません。
 具体的にはこんな感じ(←)。まずWPにログインしてダッシュボードを開くと、何やら外部に接続しに行っている様子があって、しばらくした後「WordPressニュース」の欄に

RSS エラー: WP HTTP Error: name lookup timed out

と表示されます。ちなみにMacBook AirローカルのMAMP内にインストールしているWordPressでは問題なく外部に接続しに行って、最新情報を取得してきます。始めは気にせず、表示オプションのチェックを外して消していたけれど「さて、ではここで必要なプラグイン等入れてみようか…」と検索してみたところで、どうもおかしいということに気付きました。

 同じくダッシュボードのプラグイン項目から「新規追加」を選ぶと、MacBook Airのローカルでは問題なく人気プラグインのタグが表示されるエリアに「予期せぬエラーが発生しました。云々〜」というアラートが表示され、どうやらここも外部接続に失敗している様子。というか、とにかくWordPressから外部へ情報を取りに行けない状態が発生中の模様。

気分は凹んでいる

 今回は珍しく結論から先に述べます。このトラブルは解消出来ませんでした。以下、解決には至らなかったものの、丸一日かけてアレコレ試してみた対応の数々を列挙しておきます。もしかしたら同じようなトラブルに悩まされていて、でもその人の環境では、どれかを試したら直ってしまう場合があるかも。

iptables設定を疑ってみた

 まず最初に「ダッシュボード重い、遅い」みたいなキーワードでググってみました。それでズラッと出てくるのは主に「インストールし過ぎたプラグインを不要な物からダイエットしてみましょう」みたいな、大昔のMacOSでやってた事に似たTIPS情報。でも僕のトラブルの場合、明らかにそれは別カテゴリーのことで、というもの現時点で未だ追加プラグインなどインストールしてないし、デフォルトで付属する3個のプラグインのいずれもまだ「ON」にしてないからです。
 そんなこんなで2日ほどボケーッと電車の中で思案したりしていて、ふと「WordPressが外部に接続出来無いというのは、iptablesで遮断しているからではないか?」と思い付きました。

 そこで以前、物凄く苦労してようやく設定出来たiptables設定を久し振りにwebminから覗いてみました。基本ポリシーとしてDROPしているFORWARDとOUTPUTを、ひとまずACCEPTしてみると結果がすぐに出るかも知れない…。今回、アレコレいじっているうちに、webminでiptablesの諸設定を変更・再起動する方法がようやく解り、とても有益でした。これからはターミナル経由でやらなくても大丈夫。

でも、解決しなかったけどな。

 ちなみに、今回のトラブルとは全く関係ないのだけれど、WordPressの動作が重いときの対応として、MySQLのデータベースを整理してみるというアプローチがあるのか!という事も知ったので、いつか必要が生じた時の為に載せておきます。

外部サイト参考記事
仮想化計画:AtomでXenServer (11) 構築編4 設定(World Oppressive | 二等米の反省文。。。)
MySQLの重さの原因はDNS逆引きだった(netcreates. blog)
[MySQL] 激重の原因はDNS逆引きでした(Sometime PHP)

さて、ワケが分からなくなった

 実は上のiptables設定の件を思い付いた時「これで解決に違いない!」と楽観して小躍り(ラテン系の)したのですが、出鼻から挫かれて全く原因が分からなくなりました。そこで検索キーワードを「WP HTTP Error」などに変え、ヒットしたリストを片っ端から試してみた記録を順不同で下に載せます。残念ながら「試行した順番(←重要だと思うのですが)」は覚えていないので、参考記事の情報共有としてどうぞ。なにそれ。

 WordPress のプラグインをインストールで予期せぬエラー発生の巻(WordPress の覚書)
 [解決済み] 3.0日本語 テーマのインストールエラー(WordPress.ORG 日本語)
ダメでしたねえ…。当方ではタイムアウト関連は無関係のような気が。MAMPからだと一瞬で繋がりますし。

 プロキシサーバーを介したWordPressの設定(ダメ親G(ダメオヤジー)ですが、何か?)
 WordPress 3.8.2 セキュリティリリース、3.8.3 メンテナンスリリース公開(RINS 特に重要なセキュリティ欠陥・ウイルス情報)
wp-config.php(とその関連ファイル含む)を修正するというアプローチです。両方共に試し、いろいろ弄ってみたのですが、そもそも僕のレンタルしているサーバーに、proxyサーバーなんて関係ないのではないか…?ということに気付いたのは随分後になってからです。

 [解決済み] 初回のアクセスの表示が遅い(WordPress.ORG 日本語)
サーバーをリプレースした(!)という事で直接参考にはならないのですが、このトピックで興味深いのは、同じような不具合がバージョン3.1.4という古いものでも起きているということです。この記事を書いている当ブログも、その3.1.4なのです。

 WP HTTP Error(WordPress.ORG 日本語)
多角的に攻めています。このトピックで参考になったのは、php.iniの「allow_url_fopen = On」。

 allow_url_fopenについて(使えるフォーラム)
 03) PHPアプリについて(allow_url_fopen)(VPS(仮想専用サーバー)ならラピッドサイト)
自分のサーバーにてphp.iniをviで開き、中身をチェックしてみたところ「allow_url_fopen = On」になっていました。むむむ、残念。

 CORESERVERの場合、WordPressの管理画面からプラグインを新規追加できない!(WordPressの実)
.htaccessを作成し、当方のサーバーにて同様に試してみました。すんごいエラー出ました。

 WordPressアップデートでSSLなしFTP接続でエラー警告だらけになる対策(ほのかワードプレス)
つい最近の記事です。同様に3箇所あるhttpsをhttpに修正してファイルを更新してみましたが、残念ながらカイゼンされませんでした。

 [解決済み] バージョン 3.8.3で不明なエラー”/plugin-install.php on line 77″(WordPress.ORG 日本語)
同じような不具合が、様々なレンタルサーバー会社で起きていますね。SSL絡みという点では、上の記事にも関連しているところではありますが、とにかく「コレ1つやればすぐ直るよ」という問題ではなさそうです。まあ、原因が特定できて条件が合致すれば1つ修正するだけで直るかもしれないんですけど。

 WordPressでプラグインの検索が出来ない(Symphonic-net.Com User Forum)
これは面白いと思いました。3.8.1にアップデートしたら不具合が発生したので、それまで問題のなかった3.6.1のclass-http.phpで置き換えてしまうというアイデア。でも残念ながら当方のサーバーでは解決しませんでした。ちなみに古いバージョンのWordPressはコチラからダウンロード出来ます。>WordPress日本語アーカイヴ

しばらく静観する!

 というわけで可及的速やかにカイゼンすることは適わず、もはや手も出し尽くして八方塞がりとなりましたので、しばらく静観することにします。毎回、管理画面にログインする際、外部接続しに行っているのに時間を取られているのか、すんごい時間がかかるのがイラっとするのですが、幸い、普通の記事は問題なく投稿できるし、まだ試してないから分からないけど、必要なプラグインがあれば一度ローカルにダウンロードして、それからサーバー内の所定の場所へ手動アップロードすれば大丈夫かもしれません。よって要カイゼンリストは変更ナシ!つづく。

 仮ロゴのジャギー原因解明の為にSVG画像に置き換えてテストしたい。
 というか、仮ロゴ自体のデザインをどうにかしたい。
 <footer>エリアの項目には自己紹介以外に何が必要か。
 タグを導入したい。
 WordPressのダッシュボードが外部と接続出来無い(保留)

いやあ、それにしても今回のトラブルはホント時間を取られました。しかも解決に至らなかったので、心も身体もグッタリです。

ー追記(2014.10.30)ー
何となく解決方法を見つけました。下記の投稿記事で紹介していますので、ご参考まで。
「WP HTTP Error の原因は iptables の INPUT の UDP だった」