PHPのmkdir関数はtrueとfalseを返します。問題はfalseを返すときです。mkdirがPHPから失敗する理由を見つけるには?
エラー報告を有効にして実行している場合、画面にエラーメッセージが表示されます。また、Apacheログにエラーメッセージが表示されます。しかし、私はメッセージのテキストをつかんで、別のことをしたいと思います(例えば、IM経由で自分自身に送る)。エラーテキストを取得するにはどうすればよいですか?
更新:アイマンのアイデア後、私はこれに来た:
function error_handler($errno, $errstr) {
global $last_error;
$last_error = $errstr;
}
set_error_handler('error_handler');
if (!mkdir('/somedir'))
echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();
それはグローバル変数を使用しているのでしかし、私はそれを好きではありません。よりクリーンなソリューションのアイデア? error_get_last()
の
Soulmergeの答えは、より良い選択でありますこれは、ハンドラを置き換えずにエラーを通知するためです。 –
エラーハンドラはPHPのスタックに格納されています。つまり、restore_error_handler()を呼び出すと、組み込みハンドラでも別のカスタムハンドラでも、以前のエラーハンドラが復元されます。したがって、エラーハンドラをset_error_handler()で一時的に置き換えることに損失はありません。 – soulmerge