<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Чудо{вищные} заметки</provider_name><provider_url>https://miracle.rpz.name</provider_url><author_name>MiRacLe</author_name><author_url>https://miracle.rpz.name/author/miracle/</author_url><title>Памятка кинолог@м</title><html>&lt;h4&gt;Повесть об &lt;a href=&quot;http://php.rinet.ru/manual/ru/language.operators.errorcontrol.php&quot;&gt;операторе управления ошибками&lt;/a&gt;&lt;/h4&gt;
&lt;strong&gt;Предисловие.&lt;/strong&gt;
А началось всё с того, что надо &quot;переносить&quot; множество сайтов с одного сервера на другой. По такому случаю решил-таки установить на новом сервере php5.1(раньше это делать боялся - несколько сотен проектов - и все проверить на работоспособность после апгрейда &lt;strike&gt;нет возможности&lt;/strike&gt; долгая и нудная операция). Так собственно и сделал - по мере переноса сайтов, проверяю что и как работает и при необходимости либо настраиваю php_flag-ами нужные переменные для обратной совместимости, либо правлю проблемный код вручную.

&lt;strong&gt;Часть первая&lt;/strong&gt;
Ошибки и warning-и возникали в основном из-за &lt;a href=&quot;http://php.rinet.ru/manual/ru/ini.core.php#ini.register-long-arrays&quot;&gt;register_long_arrays&lt;/a&gt; Off и присвоения неинициализированным переменным. Потихоньку исправляю. И вот сегодня при переносе очередного сайта обнаружил, что на новом сервере он отказался функционировать должным образом. Ну и ладно... &lt;a href=&quot;http://php.rinet.ru/manual/ru/ini.core.php#ini.error-reporting&quot;&gt;error_reporting&lt;/a&gt; E_ALL, &lt;a href=&quot;http://php.rinet.ru/manual/ru/ini.core.php#ini.display-errors&quot;&gt;display_errors&lt;/a&gt; On... - &lt;strike&gt;нет&lt;/strike&gt; не видно ошибок. Нет их в логах php, нет в логах apache и в браузере их тоже нет... тысяча чертей...

&lt;strong&gt;Часть вторая&lt;/strong&gt;.
Пошли дальше - открываю index.php и начинаю var_dump-ить переменные. Методом научного тыка нашёл проблемный файл. Методом всё того же тыка(который научный) вычислил, что проблемы создаёт adodb. Полез в его дебри...
&lt;blockquote&gt;К слову сказать - описываемый сайт сделан не мной (и не моими коллегами), посему разбираться что именно не работает и кто &quot;накосячил&quot; удовольствие приносило сомнительное. Движок какой-то ***nuke, повсюда коментарии в стиле &quot;holy hack&quot;,&quot;fix me&quot; и т.д. - т.е. взять и тупо обновиться до current-версии движка трудновато - приходиться делать всё по-дедовски...&lt;/blockquote&gt;
И так я в дебрях adodb. Задумал его обновить, но заметив коментарий в коде &quot;patched for ***nuke version x.y.z&quot; передумал. Стал &quot;дебажить&quot; вручную. Красота кода поражает своей безалаберностью ;o) - сразу вспоминается старый добрый мультфильм о Простоквашино и письме, которое писал Дядя Фёдор...
После 10-ти минутного поиска, я-таки нашёл причину отсутствия ошибок в логах.

&lt;strong&gt;Часть третья&lt;/strong&gt;.
Причиной служила собака. Не овчарка, не бульдог. А аттавизм, доставшийся современному php  от первых его версий оператор &quot;@&quot;. Adodb подгружала драйвер для типа СУБД следующим образом: @include &#039;/path/to/driver_&#039;.$type.&#039;.php&#039;;
Тут надо брызгать слюнями и сыпать проклятия в адрес разработчиков adodb и обещания вступить в сексуальную связь с их родственниками.... Но я этого делать не буду...
PHP сделал ровно то, о чём его просили - подавил ошибку, которая возникла при include файла. Но на этом не остановился... подавил все ошибки(в том числе и фатальные, которые случились после выполнения кода в Include).

Ошибку в итоге нашёл и исправил (два раза декларировалось одно и тоже свойство в объекте), а вот про собак больше молчать не могу - много раз уже обсуждалась их полезность и бесполезность, много доводов и выводов из этих обсуждений выносилось в факи и книги... А я отныне считаю, что они должны быть низвергнуты! Ибо невинная болонка, сиротливо охраняющая операцию типа @fopen(&#039;not_existen.file&#039;,&#039;r&#039;) может попортить мегабайт невостановимых нервных клеток и увеличить время отладки до вечности.

&lt;strong&gt;Эпилог.&lt;/strong&gt;

Всех соб@к на &lt;strike&gt;хозяйственное&lt;/strike&gt; электронное мыло. Там им почёт и слава... а в коде (php-коде) им больше места нет! Да будет так. Алюминий.

Technorati Tags: &lt;a rel=&quot;tag&quot; href=&quot;http://technorati.com/tag/dailyWTF&quot;&gt;dailyWTF&lt;/a&gt;, &lt;a rel=&quot;tag&quot; href=&quot;http://technorati.com/tag/dev&quot;&gt;dev&lt;/a&gt;, &lt;a rel=&quot;tag&quot; href=&quot;http://technorati.com/tag/php&quot;&gt;php&lt;/a&gt;</html><type>rich</type></oembed>