2017-09-10 9 views
0

私はブラウザでtemp.phpに行くときのindex.phpからのコードが例外をキャッチしているのか分かりません。私は新しく作成されたローカルサイト(Apache 2)にこれを複製することができなかったので、既存のローカルサイトやApache設定で何かか、あるいは単純なものを見落としているかもしれません。間違ったPHPファイルが例外をキャッチする方法は?

temp.php:

<?php 

try { 
    throw new \Exception('temp exception message'); 
} catch (Exception $e) { 
    die('temp catch die'); 
    error_log("[".date('Y-m-d H:i:s e')."] ".$e->getMessage(). "\n\n", 3, '/media/gcat/storage/it-all.com/Software/ProjectsSrc/Spaghettify/storage/logs/phpErrors.log'); 
} 
die('temp end die'); 

のindex.php:

<?php 
//declare(strict_types=1); 
try { 
    throw new \Exception('index exception message'); 
} catch (Exception $e) { 
    echo 'catch index'; 
    error_log("[".date('Y-m-d H:i:s e')."] ".$e->getMessage(). "\n\n", 3, '/media/gcat/storage/it-all.com/Software/ProjectsSrc/Spaghettify/storage/logs/phpErrors.log'); 
} 
die('index end die'); 

私はブラウザでtemp.phpに行くとき、出力は "一時キャッチダイ" ですが、エラーログショー"インデックス例外メッセージ"。

答えて

0

die()exit()と同じです。どちらもスクリプトの実行を停止します。

temp.phperror_log()への呼び出しが実行されることはありません。 (ブラウザでindex.phpを読み込む場合)ログファイルに参照行がindex.phperror_log()への呼び出しによって生成されます。


ブラウザでindex.phpをロードしませんが、エラー行がまだログファイルに表示された場合、チャンスはあなたがindex.phpにそのルートに.htaccessに存在しないパスのすべての要求を書き換えルールを持っているということです。 (ほとんどのPHPフレームワークは、SEOに優しいURLを処理するためにこのようなルールを使用します)。ブラウザにtemp.phpをロードすると、ブラウザはまた/favicon.icoを要求します。 Apacheはそれを見つけることができず、書き換え規則のために代わりにindex.phpをロードします。

+0

私がtemp.phpで死んでいない場合、私は両方の例外をログに表示します。私はブラウザにindex.phpを読み込まない。あなたは.htaccessの上にいるかもしれません - 私はそれを確認します、ありがとう!! – GregCatalano

+0

.htaccessと組み合わせたのはfaviconの問題でした。再度、感謝します! – GregCatalano

関連する問題