2017-09-11 18 views
0

おはよう、Laravel FileSystemの漠然としたエラーメッセージ

このファイルを変更しました。

vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php 

これは私が変更した機能です。

public function handleError($level, $message, $file = '', $line = 0, $context = []) 

私はそれを電子メールで送信しました。電子メールには、$メッセージと$ファイルと$行があります。

これはメールの内容です。

メッセージは空白ですが、ファイル内でエラーが発生しています。私はファイルを開きます。

public function delete($paths) 
{ 
    $paths = is_array($paths) ? $paths : func_get_args(); 

    $success = true; 

    foreach ($paths as $path) { 
     try { 
      if (! @unlink($path)) { # the error is here 
       $success = false; 
      } 
     } catch (ErrorException $e) { 
      $success = false; 
     } 
    } 

    return $success; 
} 

私は混乱しています。 catchブロックでエラーが発生しなかったのはなぜですか?どのタイプのエラーがlaravelのエラーハンドラにメッセージを与えないでしょうか?エラーに関する詳細情報を得るためにできることはありますか?

これはLaravelのバージョンです。

Laravelフレームワークのバージョン5.1.45(LTS)あなたが求めているすべての質問の

答えて

1

まず誤解を招くおそれがあります。あなたがやろうとしているのは、laravelにカスタムエラーハンドラを追加することです。このエラーハンドラは、this URLに従ってください。

エラーは、ファイルのパーミッションエラーが原因で発生している可能性があります。

そして、関数呼び出しunlink()の前に@という記号があるので、それによって引き起こされたエラーは抑制されます。

@記号を削除し、ファイルが存在しない場合、またはエラーがある場合はそれをスローしてブロックをキャッチします。

+0

"@"によってすべてのエラーが抑制されても、まだhandleErrorで終了していますか?それはとても奇妙です。 –

+1

@JonAbaca短い記号です。@記号を追加すると、PHPはエラーを発生させません。したがって、Laravel handleErrorは呼び出されません。これとは別に、ベストプラクティスとしてベンダーディレクトリ内のコードを変更しないでください(コンポーザーを使用して依存関係を更新すると変更内容が失われる可能性もあります)。その場合は、独自のエラーハンドラを作成し、laravelハンドラをオーバーライドする必要があります。 –

関連する問題