Есть ли способ сделать error_reporting (E_ALL); отображать в конкретном div или всплывать? [Дубликат]

Вы должны переназначить свою переменную str:

for char in line:
if char in " ?.!/;:":
    line = line.replace(char,'')
3
задан hakre 24 December 2012 в 02:42
поделиться

6 ответов

EDIT

На самом деле, я просто понял, что «ошибка», о которой вы говорите, включает эхо / распечатку. Вот проблема.

Вы print ing (echo ing) ошибка строки ПРЯМО СЛЕДУЕТ В выходной буфер (который отправляет HTML в браузер, когда вы закончите выполнение всего вашего кода) , echo() и print() отправляют то, что вы эхом / печатаете прямо, если только оно не находится в блоке output_buffer (я не буду путать вас с подробностями об этом).

Итак, вы управляя вашим обычным html / текстовым выходом таким образом, чтобы НЕ print содержимое страницы выводилось в выходной буфер, но в этом случае вы используете echo, который отправляет строковые данные непосредственно в буфер AT THAT MOMENT .

Например:

Ваша проблема в простом примере

<?php

$mystr = "<html>";
$mystr .= "<body><h1>Hello World</h1></body></html>";

echo "<head></head>";

echo $mystr;

?>

Который дал бы мне вывод в браузер :

<head></head><html><body><h1>Hello World</h1></body></html>

Я храню строковые данные, но echo в блоке HEAD до того, как я echo выложил другие html-данные.

Что мне нужно сделать:

<?php

$mystr = "<html>";
$mystr .= "<head></head>";
$mystr .= "<body><h1>Hello World</h1></body></html>";

echo $mystr;

?>

Который дал бы мне вывод в браузер:

<html><head></head><body><h1>Hello World</h1></body></html>

Я сохраняю вывод строки (ваша ошибка в этом случае), пока мне не нужно будет выводить ее позже. Это то, что вам нужно знать и выполнить в вашем коде.


Я бы исследовал error_reporting(0) / display_errors, error_get_last и set_error_handler.

http://www.php.net/manual/en/function.error-reporting.php

http://www.php.net/manual /en/errorfunc.configuration.php#ini.display-errors

http://php.net/manual/en/function.error-get-last.php

http://www.php.net/manual/en/function.set-error-handler.php

Чтобы вы может прекратить немедленно отправлять все ошибки в выходной буфер (поэтому он находится в верхней части страницы), а затем захватывать, хранить и представлять ваши ошибки.

error_reporting(0);

set_error_handler('phpLogError');

function phpLogError() {
    $error = error_get_last();

    if ($error['type'] == 1) {
        //do your stuff    
    } 
}

function phpGetLoggedErrors() {
    // return your prettified html errors
}

Или, другими словами .. .

php_error_handle.php

<?php

$GLOBAL['_logged_php_errors'] = array();

error_reporting(0);

set_error_handler('phpLogError');

function phpLogError() {
    global $_logged_php_errors;

    $error = error_get_last();

    if ($error['type'] == 1) {
        $_logged_php_errors[] = "<span>$error</span>";
    } 
}

function phpGetLoggedErrors() {
    global $_logged_php_errors;

    return "<ol><li>".implode('</li><li>',$_logged_php_errors)."</li></ol>";
}

?>

other.php

<?php

require_once 'php_error_handle.php';

// other stuff, pages included/required, etc...

Просто убедитесь, что this require_once происходит в первой строке кода.

7
ответ дан Jared Farrish 24 August 2018 в 23:35
поделиться

Отображение ошибок на экране должно быть полностью подавлено при запуске в процессе производства, а затем записывать их в файл для проверки и исправления. В файле php.ini имеются подробные сведения и рекомендуемые настройки.

0
ответ дан Alister Bulman 24 August 2018 в 23:35
поделиться
echo '<div class="yourerrorclass">error, please do something!</div>';

Если на выходе это не так, это связано с тем, что вы слишком быстро выдаете ошибку. Весь HTML выводится последовательно PHP. Если вы выведете ошибку перед любым другим HTML, ошибка будет в верхней части страницы и фактически сделает ваш HTML недействительным.

0
ответ дан GolezTrol 24 August 2018 в 23:35
поделиться

Вы можете использовать следующие настройки php.ini :

error_prepend_string = "<div class='error'>"
error_append_string = "</div>"

Или что-то в этом роде.

13
ответ дан mario 24 August 2018 в 23:35
поделиться

Расширение @mario выше, я использовал это в верхней части моего php-файла (в dev, а не в производстве, конечно!), который отлично работает. Даже в файлах администратора Wordpress!

ini_set('error_prepend_string',"<div class='error'>")  ;
ini_set('error_append_string',"</div>")  ;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
2
ответ дан MaxRocket 24 August 2018 в 23:35
поделиться
Try...catch

http://php.net/manual/en/language.exceptions.php

Вы можете сделать эхо-сообщение ошибки в своем собственном css.

0
ответ дан rayman86 24 August 2018 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: