1

コードでエラー報告を有効にしようとしています。私のPHPバージョンは5.3.6です。

次のコードを使用すると、エラー通知が表示されます。

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
?>

コメント行 2 の後でさえ、

error_reporting(E_ALL);

しかし、終了タグを削除すると、空白のページしか表示されません。

PHPタグを閉じる/閉じないという聖戦を再び始めたくありません。PHP での毎日のプログラミングの数か月間、スクリプトを実行する場合としない場合で同様の違いに気付かなかったため、これがエラー報告に何をもたらすのかを知りたいだけです。

編集:今、「sample_error」テスト行の後にエコーを付けると気づきました

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
echo 'test';
?>

繰り返しますが、空白のページしか表示されません。よくわかりません...

EDIT2:私が言及した通知:

Notice: Use of undefined constant sample_error - assumed 'sample_error' in /home/hozanie/public_html/testy/error_report.php on line 5 
4

1 に答える 1

3

?>最後にがない場合、解析エラーが発生するはずです。これは、php パーサーがユーザーの間違いを修正しようとする方法によるものです。

?>末尾にa がある場合、パーサーは宣言されていない定数を含む最後の「行」を認識し (これがsample_errorパーサーのように見えます)、単純にそれを string に変換します"sample_error"。PHP では、文字列リテラルをステートメントとして使用できますが、これは解析エラーではありません。基本的には、終了も同様に?>機能;します。次のように表示されます。

Notice: 未定義の定数 sample_error の使用 - 「sample_error」と仮定

閉じないと?>、パーサーはファイルの終わりを「現在のステートメントの終わり」として認識sample_errorしないため、文字列リテラルに自動修正されず、解析エラーが発生します。最後のステートメントを a で閉じる;と、以前のエラー修正動作に戻ります。PHP 5.4.17 を使用する私のシステムでは、次のように出力されます。

PHP 解析エラー: 構文エラー、予期しないファイルの終わり

(それ自体が間違いの修正なのかどうかはわかりません。like を使用した多くの php3 コードを見てきましたが$array[somestuff]、これは下位互換性機能である可能性があります)。

于 2013-10-22T18:45:31.843 に答える