-1

私はローカルホストで働いています。私はphp5.4.4を持っています。php.netで、バージョン5.4以降E_STRICTがE_ALLの一部になったことを読みました。

だから、私は私のphp.iniファイルでこれを見る。

error_reporting = E_ALL

したがって、これが最も厳密なエラー報告モードであると思います。だから、私はこれがうまくいくかどうかを確認するために意図的に間違いを犯します。

コードの数値で始まるように$_SESSIONキーを設定しました。エラーは報告されません。プログラムは単に正しく実行されません。

私も設定しました:display_errors = On

したがって、スクリプトの実行時に、エラーがブラウザに報告されると思います。しかし、何も起こりません。

フェローの1人であるStackoverflow.comメンバーは、私のコードをチェックしていて、彼のブラウザーがエラーを報告したため、エラーを見つけました。しかし、私の中では何も起こりません。

4

3 に答える 3

2

エラーをログ ファイルに記録するのではなく、画面にエラーを出力しないように PHP を構成している可能性があります。

つまり、display_errorsが に設定されfalselog_errorsが に設定されていtrueます。

これは、運用 Web サイトの一般的な構成であり、エラーを画面に表示するのではなく (攻撃者にとって重要な情報が明らかになる可能性があります)、エラーを Web サーバー ログに書き込みます。

于 2012-09-23T18:18:59.607 に答える
0

良い結果を得るには、グローバル エラー ハンドラをインストールし、そこでフォーマットを行うことをお勧めします。

  set_error_handler( 'error_handler' );

  function error_handler( $errno, $errmsg, $filename, $linenum, $vars )
  {    
    // error was suppressed with the @-operator
    if ( 0 === error_reporting() )
      return false;

    printf( "Unrecoverable error in `%s' line %s: %s\n\n", $filename, $linenum, $errmsg );

    exit( $errno );
  }
于 2012-09-23T18:20:13.993 に答える
0

問題を追跡するのは少し難しいです。表示エラーのある実際のエラー メッセージを表示するには、次の点に注意する必要があります。

display_errorsディレクティブは、出力先のディスプレイがある場合にのみ機能します。

通常、セッションは、スクリプトが既に終了し、関連付けられた出力がなくなった時点でディスクに保存されます。

したがって、その設定では次の通知を表示することはできません。

Notice: Unknown: 行 0 の Unknown で数字キー 0 をスキップしています

行 0のin Unknownは、これが通常の PHP コードではないことを示しています。これは、PHP エンジンがシャットダウンしてセッション データを保存するときです。

したがって、次の場合を除き、このエラー メッセージをディスプレイに表示することはできません。

  • エラー ログを追跡するか、シャットダウン フェーズ (STDOUT) の出力がまだある CLI 環境を使用します。
  • session_write_close()スクリプトの実行中にセッションを書き込むために使用します。

注意: session_write_close(): 12 行目で ... の数字キー 0 をスキップしています

これが役に立ち、完全に明確になることを願っています。

于 2012-09-23T18:21:57.587 に答える