簡単なプログラムを作成中に、www.bKjia.c0m .php ファイルで構文エラー、予期しない T_ENDWHILE という解析エラーが発生しました。その理由と解決策を分析しましょう。
問題現象:
1. 一部のマシンでは同じコードが正常に実行されますが、特定のマシンで実行するとエラーが発生します。
2. 同じサイトの一部のページ ( など) は正常に表示されますが、一部のページを開くと、phpxx_errors.log またはページにエラー メッセージ「解析エラー: 構文エラー、 xx行目のphpの予期しないT_ENDWHILE」。
エラーの理由:
このエラーは、PHP スクリプトの作成時に中かっこ (「}」) が欠落していることが原因で発生する可能性がありますが、より一般的な理由は、php.ini ファイルの short_open_tag 値が Off であることです。
PHP コード開始フラグの短縮形 ( ?>) の使用を許可するかどうかを決定します。 XML で PHP を使用している場合は、このオプションを無効にして、 の組み込み使用を容易にすることができます。それ以外の場合は、PHP を通じて出力することもできます (例: )。無効にした場合は、完全な形式の PHP コード開始フラグ () を使用する必要があります。
注: このディレクティブは、 と同等の省略形 = にも影響します。この省略形を使用するには、short_open_tag を On に設定する必要があります。短いタグの使用は推奨されません。標準的な方法は を使用することです。ただし、この短いタグは長い間使用されてきたため (歴史的な理由により)、この機能は古いタグとの互換性を保つために残されています。コード。
解決策:
php.ini ファイルの short_open_tag 値を On に設定します。
関連知識: PHP 短いタグ short_open_tag
名前 | デフォルト | 変更可能範囲 | 更新ログ |
---|---|---|---|
short_open_tag | 「1」 | PHP_INI_ALL | PHP 4.0.0 では、PHP_INI_ALL です。 PHP |
asp_tags | 「0」 | PHP_INI_PERDIR | PHP 4.0.0 では、PHP_INI_ALL です。 |
精度 | 「14」 | PHP_INI_ALL | |
シリアル化_精度 | 「17」 | PHP_INI_ALL | PHP 4.3.2以降で利用可能です。 PHP 5.3.5 より前では、デフォルト値は 100 でした |
y2k_コンプライアンス | 「1」 | PHP_INI_ALL | このオプションは PHP 5.4.0 で削除されました。 |
allow_call_time_pass_reference | 「1」 | PHP_INI_PERDIR | PHP 4.0.0 では、PHP_INI_ALL です。 このオプションは PHP 5.4.0 で削除されました。 |
機能を無効にする | 「」 | php.iniのみ | PHP 4.0.1以降で利用可能です。 |
クラスを無効にする | 「」 | php.iniのみ | PHP 4.3.2以降で利用可能です。 |
タイムアウト時に終了 | 「」 | PHP_INI_ALL | PHP 5.3.0以降で利用可能です。 |
expose_php | 「1」 | php.iniのみ | |
zend.マルチバイト | 「0」 | PHP_INI_ALL | PHP 5.4.0以降で利用可能 |
zend.script_encoding | ヌル | PHP_INI_ALL | PHP 5.4.0以降で利用可能 |
zend.signal_check | 「0」 | PHP_INI_SYSTEM | PHP 5.4.0以降で利用可能 |
zend.ze1_compatibility_mode | 「0」 | PHP_INI_ALL | PHP 5.0.0以降で利用可能です。 このオプションは PHP 5.3.0 で削除されました |
unicode を検出 | 「1」 | PHP_INI_ALL | PHP 5.1.0以降で利用可能です。 この廃止された機能は、将来必ず削除される予定です。 |
http://www.bkjia.com/PHPjc/633178.html