2012-03-10 5 views
1

Вы знаете, как ошибки PHP всегда отображаются в самой верхней части страницы. Есть ли способ подавить это и превратить его в $ var? Затем вы можете разместить его где-нибудь на странице.PHP, Как поместить ошибку в определенном месте

+7

В идеале, вы должны написать код так, чтобы он не производит никаких ошибок или предупреждений. Это не только возможно, но и рекомендуется в качестве хорошей практики. –

ответ

4

Да, вы могли бы set your own error handler перехватить и сделать что-то с этой ошибкой, кроме того, чтобы просто выводить их везде, где они происходят. Но я не думаю, что очень полезно отображать ошибки PHP на странице. Ошибки PHP не должны быть хорошенькими, они вовсе не должны возникать. Если вы его видите, это должно быть как можно более резким, и вы должны исправить его как можно скорее. Они предназначены для помощи во время разработки. Пытаться их погладить - это потратить время на неправильную часть кода.

В процессе производства эти ошибки должны регистрироваться в файле журнала и явно не выводиться на страницу.

+0

Это своего рода одноразовый. '$ php_errormsg' позволяет обрабатывать каждую ошибку отдельно, вместо того, чтобы переустанавливать обработчик в любое время, когда вы хотите, чтобы он обрабатывал ошибки по-разному. – Jon

+0

Но '$ php_errormsg' требует, чтобы вы * ожидали *, где могла произойти ошибка, и очистить переменную после того, как вы обработали ошибку. Это * намного больше * «одноразовый», а затем пользовательский глобальный обработчик ошибок. И мне кажется, что OP запрашивает глобальный обработчик ошибок. – deceze

0

$php_errormsg содержит предыдущую ошибку, даже подавленные.

@fopen('foo.txt', 'w'); 

echo $php_errormsg; // You can put this anywhere you want the error to display 

Если вы считаете, что у вас будет более одной ошибки, вы можете сохранить эти ошибки в массиве.

$errors = array(); 

for($files as $f) { 
    @fopen($f, 'w'); 
    $errors[] = $php_errormsg; 
} 

Затем вы можете распечатать все ваши ошибки:

print_r($errors); 
    //or 
for($errors as $e) { 
    echo $e; 
} 
+2

'log_errors = on' и' display_errors = off' в php.ini намного, намного чище. – ThiefMaster