Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Подавление ошибок


Автор: litle_bee 11.2.2008, 05:01
Надо сотворить так, чтобы при unix не вываливал гору ошибок! Они никому не мешают, а внешний вид портят...
Пытаюсь в подключаемый файл вписать функцию SetErrorReporting(0)

Код

<?php
 
  $dblocation = "localhost";
  $dbname = "h2club";
  $dbuser = "root";
  $dbpasswd = "123";

  // Устанавливаем соединение с базой данных
  $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!$dbcnx)
  {
    echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }

  if (! @mysql_select_db($dbname,$dbcnx) )
  
  {
    echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

function SetErrorReporting(0);

?>


В ответ выдает мне ошибку 
Код

Parse error: syntax error, unexpected T_LNUMBER, expecting '&' or T_VARIABLE 


Замучилась! Помогите, пожалуйста!

Автор: skyboy 11.2.2008, 11:09
Цитата(litle_bee @  11.2.2008,  04:01 Найти цитируемый пост)
function SetErrorReporting(0);

1. функция называется http://php.net/error_reporting
2. тут ты не вызываешь функцию, а пытаешься описать(создать) новую. причем с константой среди аргументов, что делать нельзя. о чем интерпретатор и говорит.

Автор: gemaglabin 11.2.2008, 12:51
В случае если safe_mode off то можно 

Код

ini_set('display_errors','уровень подавления');


Но лучше конечно воспользоваться универсальным  http://ru2.php.net/error_reporting

Код

error_reporting(число);


Для себя я выбрал set_error_handler - можно удобно скидывать все ошибки в один файл и в случае чего смотреть

Автор: GeneralElectric 11.2.2008, 13:22
gemaglabin, вообще-то, error_reporting - это не лучше, чем ini_set('display_errors'
Это совсем разные директивы, и делают совсем разные вещи. И никакого уровня подавления в display_errors нет.

litle_bee, вообще-то, желательно, конечно, чтобы код при своей штатной работе не вызывал никаких сообщений об ошибках. Это в идеале.
Если же код написан криво, и вызывает при нормальной работе ошибки, их, конечно, можно подавить.
Ошибки, как я понимаю, начинаются со слова Notice?
В этом случае можно написать в начале файла error_reporting(E_ALL ^ E_NOTICE);
Notice перестанут сыпаться.

Но другие ошибки при этом будут показываться пользователю, что нежелательно
поэтому также желательно добавить команды
    
ini_set('display_errors',0);
ini_set('log_errors',1);

чтобы ошибки шли не на экран, а в лог



Автор: litle_bee 11.2.2008, 16:51
Всем спасибо!
Обошлась error_reporting...
Ошибки при приеме гетом - один и тот же параметр передается на определенную страницу почти отовсюду, соответственно и принимается. А вот в том единственном случае, когда не передается и выдается ошибка, мол знать не знаю такого...

Писала дома под виндой, а когда перенесла на юникс, понеслись крававые надписи по мою душу smile

Ну вроде все осилила, больше не выдает.

GeneralElectric! Спасибо большое за советы! Пока диплом, и так хорошо. А на будущее запомню.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)