2

最近、PHP5.3をダンプしたxamppv1.7.2にアップグレードしました。それに加えて、すべてのhttpd.confsとphp.iniが消去されました(このリリースは、以前のすべてのxamppリリースと同様にアップグレードされることは当然のことと思っていました)。とにかく、すべてのサービスを再構成するのにしばらく時間がかかりましたが、今では面白い問題が発生しています。

私の職場で使用されているこの自作のCMSは、if-elseの多くの代替条件構文を使用しています。

if( condition ): ?>
    <some html />
<?php else: ?>
    <some other html />
<?php endif;

これは、xampp1.7.1に付属していたPHP5.2.xで正常に機能していましたが、突然、このようなコードブロックによって次のエラーが発生します。

解析エラー:構文エラー、予期 しないT_ELSEin ..。

スクリプトを変更したことはありません。PHP5.2.xでは問題なく動作していました。

だから私の質問は、PHP 5.3はそのような代替条件を許可しますか?または、構成ファイルで非表示のオプションをオンにする必要がありますか?

ショートタグは使用しないことに注意してください。ここでは問題になりません。

4

2 に答える 2

4

if/else 構文は 5.3 で変更されていませんが、構文の他の多くの部分が変更されています。問題のelseステートメントの直前の行をチェックして、他の新しい構文機能の1つがパーサーを混乱させているかどうかを確認する必要があります.

どこに問題があるのか​​ わからない場合は、次の 3 行が残るまで、いつでもコード行を体系的に削除することができます。

<?php if(condition): ?>
<?php else: ?>
<?php endif ?>

更新:コードをオンにしてテストする必要がshort_open_tagあります。表示される構文エラーは、次のコードがどこかにある場合に発生するものであるためです。

<? if(condition): ?>
<?php else: ?>
<?php endif ?>
于 2009-10-12T03:05:03.013 に答える
0

はい、PHP 5.3 では、条件ステートメントを含む制御構造の代替構文を使用できます。

問題が解決するかどうかを確認するために、1 つか 2 つの場所で代替構文を通常の構文に置き換えてデバッグを試みることをお勧めします。もしそうなら、あなたは問題が何であるかを確実に知っています。

于 2009-10-12T02:58:26.380 に答える