APC と WP Super Cache を導入してからしばらくしたら、「Wordpressが真っ白で見れない!」と言われました。エラーメッセージも何も出ないっぽい。なんぞ?とちょっと調べた。
エラーメッセージが出ないのは単に wp-config.php でエラーメッセージの抑制してたからでした、はい。開発中は表示する様にしましょう。
そして出てきたエラーメッセージは以下の文言
Fatal error: Internal Zend error - Missing class information for in /hoge/fuga/piyo/wp-cache-base.php on line 5
よくわからんのでぐぐったら、APC でクラスをうまくキャッシュできないみたいな感じの文言が見つかったり見つからなかったりする。原因はよくわからんが対処法は見つかった。
このエラーに対処する際、大抵以下の様な方法で解決を試みてる様だ。
WordPress › Support » SuperCache "Internal Zend error" WTF?
以下のように、apc.ini に APC を無効にするスクリプトの名前を記載しておけば良いらしい。
$ sudo vim /etc/php5/conf.d/apc.ini
extension=apc.so
apc.filters = wp-cache-config
apc.include_once_override = 0
ところが俺の環境ではこれでは解決しなかった。APC も WP Super Cache も使いたいので WP Super Cache の ソースコードを読む事にした。
以下がクラスが云々といわれてエラーが出る箇所。
/example/wp-content/plugins/wp-super-cache/wp-cache-base.php
<?php
$known_headers = array("Last-Modified", "Expires", "Content-Type", "Content-type", "X-Pingback", "ETag", "Cache-Control", "Pragma");
if (!class_exists('CacheMeta')) {
class CacheMeta {
var $dynamic = false;
var $headers = array();
var $uri = '';
var $post = 0;
}
}
?>
このクラス、wp内を grep してみたが何処でも使ってない。なんであるのかよくわからない、試しにコメントアウトしたらエラーも出ずにちゃんと動いた。なんぞ?
というわけでこのクラス情報削除したら動きます、はい。もちろん WP Super Cache がアップデートしたらどうなるかわかりませんけど。
コメント
[…] ■APC と WP Super Cache が競合する? – loumo.jp ■APCとWP Super Cacheを併用していると500エラーがたまに出る問題の解決策 | input*output しかしこういう問題もあるようで(まだ遭遇してないけど). […]
[…] そしたら結構調子いいみたい。 このまま収まってくれればいいなあ。 ※こちらを参考にさせていただきました。 Related Posts:Bitnami WordPress – apache […]
[…] APC と WP Super Cache が競合する? – Lonely Mobiler […]
[…] on line 5 どうやらwp-super-cacheというプラグインが悪さしている模様。 APC と WP Super Cache が競合する? – Lonely Mobiler […]