<?php
error_reporting(E_ALL);
$img_path = "./images/pic.jpg";
?>
<img src='<?= $img_pat ?>' />
При таком коде видим, что переменная $img_pat неопределена (т.к. опечатка в имени), следовательно никакое изображение не выведется. Но самое неприятное, что нотис мы получим в html, а в браузер он не выведется.
Типичная ситуация - не вывелось изображение. Первые мысли - отсутствует файл, потом проверка путей, потом полей в базе, где эти пути храним, потом бутылка водки с горя и головой об стену.
А всего лишь... опечатка в имени переменной.
Есть метод, чтобы этот нотис заставить в браузере "улыбаться" ? :)
Спустя 1 час, 43 минуты, 44 секунды (10.08.2012 - 08:05) Игорь_Vasinsky написал(а):
нотис есть, глянь исходный код
Цитата |
<img src='<!--error--><br /> <b>Notice</b>: Undefined variable: img_pat in <b>Z:\home\блаблабла</b> on line <b>9</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>'/> |
он не выводиться т.к. ты его в атрибуте src поймал - а от туда он не как не промониториться.
тут если тока дебаггеры юзать.
Спустя 9 минут, 49 секунд (10.08.2012 - 08:15) kamanch написал(а):
Ну то что есть, я знаю. оттого и тему создал 
Вопрос в том как раз и был, есть ли реализация, или идея, как реализовать, чтобы этот нотис в браузер высветился.
Нууу... например, после загрузки страницы яваскриптом по html пробежаться на предмет слов Notice, Warnung...
Или включить буферизацию вывода, а перед выводом этот буфер проверить на теже слова. Если встретяться, то мигать.
Что получше кто придумает?

Вопрос в том как раз и был, есть ли реализация, или идея, как реализовать, чтобы этот нотис в браузер высветился.
Нууу... например, после загрузки страницы яваскриптом по html пробежаться на предмет слов Notice, Warnung...
Или включить буферизацию вывода, а перед выводом этот буфер проверить на теже слова. Если встретяться, то мигать.
Что получше кто придумает?
Спустя 8 минут, 55 секунд (10.08.2012 - 08:24) Игорь_Vasinsky написал(а):
Спустя 5 минут, 56 секунд (10.08.2012 - 08:30) kamanch написал(а):
О, Игорь, ты же спец по парсингу
Значит регулярки хорошо знаешь, ну ка выдай:
Раз нотис в html, значит он внутри тега, т.е. тег был открыт <, потом что угодно, потом Notice или Warnung, опять что угодно, потом открыт следующий тег <

Раз нотис в html, значит он внутри тега, т.е. тег был открыт <, потом что угодно, потом Notice или Warnung, опять что угодно, потом открыт следующий тег <
Спустя 26 минут, 36 секунд (10.08.2012 - 08:57) Игорь_Vasinsky написал(а):
сек
Спустя 16 минут, 59 секунд (10.08.2012 - 09:14) Игорь_Vasinsky написал(а):
Придётся сначала статику в буфер гнать
тогда мониторить будет так
<?php
ob_start();
?>
<!--ВЕСЬ ВЫВОД-->
<h1>Статичная страница</h1>
<p>Абзацы текста и прочий хлам</p>
<div>
Имитация нотиса в атрибуте src:<br />
<img src="<?=$img_path;?>/image.png"/>
<img src="<?=ROOT;?>/image.png"/>
</div>
<!--КОНЕЦ ВЫВОДА-->
<?
$html = ob_get_contents();
ob_end_clean();
preg_match_all("#<b>Notice</b>\:(.*)on line <b>.*</b>#iusU", $html, $errors);
if(!empty($errors[0]))
{
echo '<div style="border:1px solid red; padding:5px; background-color: #FBFCCF"><b>Они пытались скрыться от глаза, но попались)</b><br /><br />';
foreach($errors[0] as $error)
echo $error.'<br />';
echo '</div>';
}
#Вывод статики
echo $html;
?>
тогда мониторить будет так

Спустя 12 минут, 53 секунды (10.08.2012 - 09:26) killer8080 написал(а):
Ребята не страдайте фигней. Есть функция set_error_handler(), покрайней мере с нотисами она отлично справляется, не перехватывает только фатал еррор.
Спустя 3 минуты, 6 секунд (10.08.2012 - 09:30) Игорь_Vasinsky написал(а):
это нуторно) и потом, здесь же задача была уловить скрытые нотисы.
Спустя 3 минуты, 24 секунды (10.08.2012 - 09:33) kamanch написал(а):
Класс!
Можно спокойно идти спать
Можно спокойно идти спать

Спустя 4 минуты, 24 секунды (10.08.2012 - 09:37) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 10.08.2012 - 10:30) |
это нуторно) и потом, здесь же задача была уловить скрытые нотисы. |
я так понял, задача отловить ошибки, которые могут быть скрыты тегом, а это не обязательно нотисы, если бы путь к картинке возвращала функция, и в её имени была ошибка, был бы ворнинг. И что тогда? Писать еще одну регулярку? Когда есть штатная функция для отлова ошибок

Спустя 1 минута, 58 секунд (10.08.2012 - 09:39) killer8080 написал(а):
Цитата (killer8080 @ 10.08.2012 - 10:37) |
если бы путь к картинке возвращала функция, и в её имени была ошибка, был бы ворнинг |
а, пардон, ошибся. Udefined function - это фатал

Спустя 4 минуты, 31 секунда (10.08.2012 - 09:44) Игорь_Vasinsky написал(а):
fatal и parse error не как вообще не покажутся, даже в исходнике не видно.... жал. а регулярка бы сработала)

Спустя 4 минуты, 15 секунд (10.08.2012 - 09:48) killer8080 написал(а):
Спустя 3 минуты, 24 секунды (10.08.2012 - 09:52) killer8080 написал(а):
И еще может кому интересно
http://dklab.ru/lib/Debug_ErrorHook/
http://dklab.ru/lib/Debug_ErrorHook/
Спустя 4 минуты, 11 секунд (10.08.2012 - 09:56) Игорь_Vasinsky написал(а):
)) да это так.. развлекуха была

Спустя 39 минут, 5 секунд (10.08.2012 - 10:35) Zerstoren написал(а):
Цитата (Игорь_Vasinsky @ 10.08.2012 - 07:30) |
это нуторно) и потом, здесь же задача была уловить скрытые нотисы. |
Так и можно уловить скрытые нотайсы.
К примеру, можно полностью останавливать скрипт или если Линух (Убунту) и сервер на локалке, то ошибку выводить прямо на рабочий стол в виде нотифи сообщения.
Выглядеть будет вот так http://img6.imagebanana.com/img/nyqomnyy/20120810103605.jpeg.
Нужно будет просто в консоль отправить команду:
~$ notify-send 'SiteError: Notice in file /index.php on line 25'
Спустя 5 минут, 15 секунд (10.08.2012 - 10:40) Игорь_Vasinsky написал(а):
и тут его понесло

Спустя 10 минут, 50 секунд (10.08.2012 - 10:51) Zerstoren написал(а):
Цитата (Игорь_Vasinsky @ 10.08.2012 - 08:40) |
и тут его понесло ![]() |
Меня О_о?
Честно, я не бухал с утра)
Спустя 9 минут, 53 секунды (10.08.2012 - 11:01) Игорь_Vasinsky написал(а):
Повторяю, задача была под конкретную цель. Отловить Notice
ну а что буфер фатал эррор может перехватывать, то это просто свезло.
ну а что буфер фатал эррор может перехватывать, то это просто свезло.