サポート » 使い方全般 » PHP Version 5.6 で500エラーになるコードの書き方について

  • 解決済 amachang

    (@amachang)


    この度PHPのバージョンを5.6に上げたところ、phpファイルの以下の記述で500エラーになることがわかりました。
    こちらはメタタグを記事の本文から60文字取得するためのコードだったんですが、書き方に問題があるのだろうと思います。

    <?php if ( is_single() ) { ?>
    <?php if ($post->post_excerpt){ ?>
    <meta name="description" content="<? echo $post->post_excerpt; ?>" />
    <?php } else {
    $summary = strip_tags($post->post_content);
    $summary = str_replace("\n", "", $summary);
    $summary = mb_substr($summary, 0, 60). "..."; ?>
    <meta name="description" content="<?php echo $summary; ?>" />
    <?php } ?>
    <?php } else { ?>
    <meta name="description" content="<?php bloginfo('description'); ?>" />
    <? } ?>

    当方では見当がつかないんですが、正しい記述をご教示頂けないでしょうか?
    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは

    http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_html_excerpt

    
    content="<? echo $post->post_excerpt; ?>" 
    

    excerptは、ダブルクウォートは除去しないで ” ”に通常置換されますが、code要素やkbd要素を使った場合は、置換が省かれます

    esc_attr()の追加を検討してみてはどうでしょう

    こんにちは

    末尾の行に「php」がないためにパースエラーになっているんではないでしょうか。
    関数や$postはスタブにしてphp5.6.26のコマンドラインで実行したエラー出力は以下のとおりです。

    実行コード

    <?php
    function is_single(){return true;}
    function bloginfo(){echo 'description';}
    $post = new stdClass;
    $post->post_excerpt = false;
    $post->post_content = 'post_content';
    ?>
    <?php if ( is_single() ) { ?>
        <?php if ($post->post_excerpt){ ?>
            <meta name="description" content="<? echo $post->post_excerpt; ?>" />
        <?php } else {
            $summary = strip_tags($post->post_content);
            $summary = str_replace("\n", "", $summary);
            $summary = mb_substr($summary, 0, 60). "..."; ?>
            <meta name="description" content="<?php echo $summary; ?>" />
        <?php } ?>
    <?php } else { ?>
        <meta name="description" content="<?php bloginfo('description'); ?>" />
    <? } ?>

    エラー
    PHP Parse error: syntax error, unexpected end of file in C:\Users\*****\test.php on line 20

    正しく実行されるためには末行を変更します。
    <? } ?>

    <?php } ?>

    phpという記述が必要かどうかは、
    short_open_tag
    というphp.iniの設定で決まるようですね。

    phpのバージョン変更と共に参照しているphp.iniも変更になり、上記記述がエラーになるようになったのでは・・・と推察します。

    @nobita

    ご回答ありがとうございます!勉強になります。

    @munyagu

    ありがとうございます!最後の行を
    <?php } ?>
    としたところ、うまくいきました!

    たいへん助かりました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「PHP Version 5.6 で500エラーになるコードの書き方について」には新たに返信することはできません。