コンフリクト!

昨日辺りから、フィードが500エラーを返してて何でだろうと色々調べてみると、昨日入れたExec-PHPが問題だったらしい。

Exec-PHP単体で動かしてる分には良かったんだけど、”Syntax Highlighter for WordPress”と同時に使用すると、フィードでPHPを実行しようとしてるみたいで。*1
さらに、フィードではSyntax Highlighterも動かないから[php]も置換されずにそのまま出てるわけで…
“eval()’d code on line 20″とか’[‘が多いとかいうエラーが出てました。

フィードでPHPを動かす必要性はあまりない。
てことでExec-PHPで実行される前に[php]~[/php]をオミットすることにする。

exec-php/includes/runtime.php

1
2
3
4
5
6
7
8
9
10
11
function eval_php($content)
{
    // to be compatible with older PHP4 installations
    // don't use fancy ob_XXX shortcut functions
    $content = preg_replace('/\[php[^<>#x5d;*\](.*\r\n)+\[\/php\]/i', "", $content);
    ob_start();
    eval("?>$content<?php ");
    $output = ob_get_contents();
    ob_end_clean();
    return $output;
}

空白に置換するんじゃなくて、何かしらの文字列にした方がいいかもねぇ。
「PHPソース省略」とか。
あと、PHPだけじゃなくてHTMLソースも消した方がよさそう。*2

脚注

  1. 記事は’<’が文字実体参照に置換されるから問題ない [戻る]
  2. 今回対応したのが、後で問題になりそうな気がするなぁ… [戻る]
上へ参ります。