Откуда берутся Warnings при отключенном выводе ошибок (РНР)?

Asar
На сайте с 23.08.2004
Offline
334
632

В скрипте проставлено:

ini_set ('display errors', 'Off');

error_reporting(0);

Однако ж выдаются такие ворнинги:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource...

Вопрос: что еще можно сделать, чтобы эти ворнинги отключить? Не источник их, а только показ?

Sveta Prokopeva
На сайте с 10.05.2006
Offline
99
#1

Можно использовать собаку @ в ошибкоопасных местах

edogs software
На сайте с 15.12.2005
Offline
775
#2
Asar:

ini_set ('display errors', 'Off');
error_reporting(0);
Однако ж выдаются такие ворнинги:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource...

99% за то, что где-то позже в скрипте ошибки все-таки включаются.

Если скрипт собирает данные в переменную, а не напрямую echo их, то можно сделать так. Вначале ob_start - включить буферизацию, потом ob_end_clean почти в конце скрипта - все ошибки возникшие в ходе выполнения - окажутся в этом буфере (если скрипт эхом ничего не выводит), а потом уже echo контент страницы. Таким образом отдадите юзеру только контент страницы, вне зависимости от того кто и когда включил ошибки.

Asar:
Тоже так думаю. Но обыскался ужо и вручную, и поиском...

Как вариант - включите варнинги в пхп.ини и запретите функцию error_reporting, init_set там же если надо будет. После чего запускаете скрипт и видите в каком файле и на какой строке у Вас ошибка "error_reporting function not found", делаете выводы.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Asar
На сайте с 23.08.2004
Offline
334
#3
edogs:
99% за то, что где-то позже в скрипте ошибки все-таки включаются

Тоже так думаю. Но обыскался ужо и вручную, и поиском...

SandyMan
На сайте с 13.06.2004
Offline
129
#4
Asar:
В скрипте проставлено:

ini_set ('display errors', 'Off');
error_reporting(0);

используйте правильный синтаксис:

ini_set('display_errors', 0);

чтобы проверить, где в коде включается показ ошибок, распечатайте после каждого инклюда в ini_get('display_errors'). Если будет 1, то заходите в вышестоящий инклюд и ищите там.

а вообще, лучше исправить проблему. Сообщения на то и даются, чтобы обратили на них внимание и решили их. Да и серверу легче будет работать если код будет исполнятся без ошибок.

---------- Добавлено 26.01.2012 в 17:20 ----------

Sveta Prokopeva:
Можно использовать собаку @ в ошибкоопасных местах

это плохой стиль

---------- Добавлено 26.01.2012 в 17:24 ----------

Asar
На сайте с 23.08.2004
Offline
334
#5
SandyMan:

чтобы проверить, где в коде включается показ ошибок, распечатайте после каждого инклюда в ini_get('display_errors'). Если будет 1, то заходите в вышестоящий инклюд и ищите там.

Вот это: echo ini_get('display_errors') не показывает ничего (хотя ворнинги есть). Или я чего не так понял?

SandyMan:

а вообще, лучше исправить проблему. Сообщения на то и даются, чтобы обратили на них внимание и решили их. Да и серверу легче будет работать если код будет исполнятся без ошибок.

Проблема исправляется через if. Обработка if — не хуже ли (или однох?????енно) ошибки?

---------- Добавлено 26.01.2012 в 20:52 ----------

Вот такой код подряд

ini_set ('display errors', 0);

error_reporting(0);

echo ini_get('display_errors');

Дает On...

SandyMan
На сайте с 13.06.2004
Offline
129
#6

Вы на shared hosting?

скорее всего у Вас safe_mode On, поэтому не можете повлиять на установки PHP из скрипта.

попробуйте просто починить проблему

Asar
На сайте с 23.08.2004
Offline
334
#7

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий