Отчеты об ошибках

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Люди, помогите!
Поменял версю Vertrigo (почти как денвер) и появилась куча предупреждений, но раньше предупреждения отображал не все и меня это устраивало, ошибки отображало.
А щас туча выходит их, вот так:
Код:
Notice: Use of undefined constant HTTP_X_FORWARDED_FOR - assumed 'HTTP_X_FORWARDED_FOR' in D:\VertrigoServ\www\vsetke.ru\mysql.php on line 23

Notice: Undefined variable: id_login in D:\VertrigoServ\www\vsetke.ru\shapka.php on line 1

Notice: Undefined index: mod in D:\VertrigoServ\www\vsetke.ru\enter.php on line 3

Notice: Undefined variable: head in D:\VertrigoServ\www\vsetke.ru\enter.php on line 55
И таких по штук 30-50 на страницах у меня... Задолбали... раньше не было.
Я взял и убрал всё это дело черех htaccess, вот так:
Код:
php_flag display_errors Off
Зато теперь другя фигня получилась: Вообще ничего не отображает из ошибок, раньше хоть если забудешь поставить знак ; в конце выражения или название функции не пральна наишешь когда вызываешь, то ошибка выходит а сейчас нету.
Вот что там надо в конфиге прописать что бы эти все Notice убрать а все остальные ошибки и варнинги и предупреждения оставить?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Так, ну помощи я не дождался, поэтому включил мозг и сделал всё сам.
Значит это делается вот так:
Ищем файл php.ini, у меня он тут:
D:\VertrigoServ\Php
Открываем его и находим такие строчки:
Код:
error_reporting
display_errors
display_startup_errors
и ставим вот так:
Код:
error_reporting = E_ALL & ~E_NOTICE &~E_STRICT
display_errors = On
display_startup_errors = On
Кстати, если эти строчки у вас вдруг закомментированы (знаком ";" (точка с запятой)), то их надо убрать.
Теперь попробую разъяснить:
Код:
;Это означает: Выводить ВСЕ ошибки и предупреждения на страницу, кроме советов, логических ошибок (notice)
error_reporting = E_ALL & ~E_NOTICE &~E_STRICT
;А это означает надо ли вообще выводить ошибки в браузер или нет, если поставить в офф, то ошибки будут сохраняться в файл с логом ошибок 
display_errors = On
;А это выводит ошибки при запуске пхп, 
display_startup_errors = On
Только теперь у меня другой вопрос: Будет ли доступ к этому php.ini когда купишь услуги хостинга? И не случаются ли траблы, если используешь и htaccess и php.ini одновременно?
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
Только теперь у меня другой вопрос: Будет ли доступ к этому php.ini когда купишь услуги хостинга? И не случаются ли траблы, если используешь и htaccess и php.ini одновременно?
на хостингах как правило вывод ошибок уже выключен. да и для их скрытия достаточно в начале скрипта написать display_errors(0);
а ещё лучше если ты их все исправишь. все таки ошибки надо исправлять а не игнорировать. даже е значительные о том что переменная не инициализирована до её вызова. вместо
if($test) писать if(isset($test))
ну или так
Код:
$test = false;
if(...)
{
...
$test = aray(..)//или ещё чего
}
if($test) // ошибки нет и при не выполнении предыдущего условия
для подавления ошибок функции mysql_connect() например. можно сделать так @mysql_connect()
но лучше внести её в условие и обрабатывать результат
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Готовая версия должна работать без ошибок, а подавление(@) достаточно ресурсоемкое.
Ошибки потом могут вылиться в неприятности, это раз.
Второе, это то что ты привыкнешь к ним, и можешь упустить важную ошибку.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Это понятно. Но что сможет сделать злой пользователь с этой неицилизированной переменной? Я так думаю ничего, потому что регистр-глобальс выключен и инклуд с других сайтов тоже.
А ошибок у меня нет, даже предупреждений нет, я их вообще не выключаю на локалхосте. А вот эти советы в виде неициализированных переменных мне, кажется, злоумышленник ну никак не сможет использовать. Или я ошибаюсь?

даже е значительные о том что переменная не инициализирована до её вызова. вместо
if($test) писать if(isset($test))
А какое между ними различие?
Я раньше думал, что это совершенно одинаковое дейсвие в проверке на существование переменной.. Даже не думал, а где то прочитал, но где - не помню:(
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Код:
if($test) // false
$test = 0;
if($test) // false
$test = false;
if($test) // false
if(isset($test)) // true
$test = null;
if($test) // false
if(isset($test)) // false
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
А какое между ними различие?
Я раньше думал, что это совершенно одинаковое дейсвие в проверке на существование переменной.. Даже не думал, а где то прочитал, но где - не помню:(
поверь есть
Код:
$test=false;
if($test) //даст false
if(isset($test)) //даст true
в первом случае условие смотрит на внутренность переменной. а во втором, функция isset выдает true или false в зависимости от её существования в принципе. а не от того что в ней
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
О, спасибо, помогли разобраться!
Но есть ещё функция empty(), они идентична isset?
empty - определяет, установлена ли переменная. php.su
php.net

empty
Возвращает FALSE, если var является непустым и ненулевым значением.

Следующие значения воспринимаются как пустые:
"" (пустая строка)
0 (0 как целое число)
"0" (0 как строка)
NULL
FALSE
array() (пустой массив)
var $var; (переменная объявлена, но не имеет значения в классе)
isset
Returns TRUE if var exists and has value other than NULL, FALSE otherwise.
(возвращает true если переменная существует и не равна NULL. при false вроде тоже true будет. не могу сейчас проверить)
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
О, спасибо, помогли разобраться!
Но есть ещё функция empty(), они идентична isset?
empty - определяет, установлена ли переменная. php.su
php.net

empty
Возвращает FALSE, если var является непустым и ненулевым значением.

Следующие значения воспринимаются как пустые:
"" (пустая строка)
0 (0 как целое число)
"0" (0 как строка)
NULL
FALSE
array() (пустой массив)
var $var; (переменная объявлена, но не имеет значения в классе)
isset
Returns TRUE if var exists and has value other than NULL, FALSE otherwise.
(возвращает true если переменная существует и не равна NULL. при false вроде тоже true будет. не могу сейчас проверить)
Всё, теперь разобрался)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ