[WordPress][PubSubHubbub] 記事を投稿すると真っ白な画面が表示される → 解決

CreateCamp Klagenfurt 2011
Creative Commons License photo credit: mgratzer BarCamp

いつの頃からか、当ブログ(WordPress)での記事の投稿処理中に、ブラウザ上に真っ白な画面が表示されてしまうという現象が発生するようになりました。
真っ白な画面が表示されたあとにブログを確認すると、記事はきちんと投稿されているのですが、なんだか気持ち悪いので原因を調べてみました。

原因調査

WordPressはPHPで書かれているので、真っ白な画面が表示されるのはPHPのFetal Errorがどこかで発生しているから、とあたりをつけました。早速PHPのエラーログを見てみると、以下のようなエラーが発生していることを発見。

どうやら「WordPressのPubSubHubbubプラグインがcurl_init()関数を呼んでいるけど、そんな関数ないよ。」というのが真っ白な画面が表示されてしまう原因みたい。

curl_init()関数は、PHPでcURLサポート機能が有効になっていないと使えない関数だそうで、僕のさくらVPS + CentOS + PHP 5.3.3の環境では有効になっていないみたいでした。

解決方法

PHPはソースからコンパイルしてインストールしていたので、configureのオプションを変えて再コンパイル & インストールすることにしました。cURLサポート機能を有効にするには、configureのオプションに「–with-curl[=DIR]」を付けてPHPをコンパイルする必要があります。

以下のコマンドを実行し、PHPの再コンパイル & インストールを行いました。cURLのライブラリやヘッダファイルも必要なので、それも合わせてインストールしています。configureオプションに「–with-curl=/usr」が含まれていることに注目してくださいね。

無事インストールが終わったらhttpdを再起動して、cURLサポート機能が有効になっているかどうかphpinfo()を使って確認。下図のようにcurlのセクションが表示されていれば成功です。

phpinfo()

まとめ

WordPressのプラグインには、今回のようにPHPの拡張機能に依存しているものもあるんですね。少し勉強になりました。

一応、これでFetal Errorは出なくなるハズなんですけど、まだ一度も試してないのでどうなるかわかりません。もうすぐこの記事が書き終わるので、今から試してみたいと思います。

真っ白な画面が表示されませんように!
それでは!