教文館の社内ナレッジベースです。

twitter連動のプラグインは無数にあるんだが、更新してなかったり不具合があったりでだんだん淘汰されてきているように思う。ここに来てwordpress本家がJetpackをリリースしてSNS(ツイッターも)連動機能を取り入れたためもうモノポリー状態かと思いきや、案外そうでもなさそう。

理由はJetpackは投稿数が増えれば増えるほど莫大なメモリ使用量があるということ。データベースにアクセスするらしい必要のない機能も初期設定でバンドルされているため、メモリをがっぽり食うようだ。(注:弊社のサイトはマルチサイトで、投稿数も2万件以上あります。Jetpackに問題があるわけではありませんので。念のため。)実際、アクセスエラーが頻発。そこで、Jetpackは泣く泣く外しています。その代わりSNS連動のため「WP to Twitter」が使えないか実験。

高機能ですが、・・・・なぜか本番サイトだとホワイトアウトして500エラーが出るんですよね~。どこが問題なのか、単にプラグインをくっつけすぎなのか検証です。

9/14追記

上の記事は7月16日に書いたまま下書きしていましたが、結局不具合の原因はPHPの設定の問題でした。

500エラーの詳細をデバッグモードで調べると

「Warning: Cannot modify header information – headers already sent by ~~~」

と表示されていました。どうもこれはスクリプトの途中でheader関数を実行したときなどに表示されるようです。つまり、header関数より前では何も出力しないようにということだそうですが、調べてみても別にヘッダーの前に空欄や余計な文字は入っていない・・・。しかも、ツイッター連動スクリプト自体の処理はエラーにもかかわらずきちんと終わっている。なので感覚的にヘッダ情報が完成しないうちに出力されていると感じたので(←ココらへんがオカルトちっくでなんちゃってな私)、なんとなくPHPの設定自体を疑った。

別の記事に、「php.iniにバッファリングを設定すれば治る」と書いてあったので、

output_buffering = On

を加えてみたがダメでしたorz

それでPHPの根本的な挙動の設定を変えたら、なんとエラーが解消されました!PHPには「CGI 版」と「モジュール版」があるのですが(その違いについてはコチラを参照)、パフォーマンスのよい「モジュール版」を設定したらエラーがなくなりました。これで「WP to Twitter」が使えるようになり、晴れてブログ&ツイッター連動もエラー解消!