Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> error.log сайта, ограничение логов, ошибки сайта 
V
    Опции темы
nicka47
  Дата 11.7.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



Сайт создает огромные error.log логи, почему то на всех остальных сайтах подобная проблема никогда не вставала, то ли на других серверах  происходит какой то контроль за логами, ограничение их размеров. 

Поскольку система написания кодов одна, то такая же проблема с ошибками должна была вставать на всех остальных сайтах.

типы ошибок  - PHP Warning, PHP Notice

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

Понимаю, что без представления тут конкретных ошибок, трудно ответить. Но меня пока интересуют ощие ответы на вопросы, типа способы работы с лог файлами. Должен ли контролировать их создатель сайта, или это задача администратора сервера. Нормальное ли дело такое количество ошибок, если учитывать, что сайт достаточно большой, и работает правильно. ПОрядок уникальных посетителей небольшой, приблизительно 500 человек
PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(nicka47 @  11.7.2008,  10:38 Найти цитируемый пост)
Поскольку система написания кодов одна, то такая же проблема с ошибками должна была вставать на всех остальных сайтах.

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


PM   Вверх
nicka47
Дата 11.7.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



Feldmarschall, я имела все свои предыдущие работы.

ТО есть, вы хотите сказать, что правильно написаный код, не может выдавать никаких ошибок в логах?

Добавлено через 2 минуты и 29 секунд
хорошо, давайте попробуем конкретно, вот одна из ошибок, помогите разобраться и устранить:

[Fri Jul 11 09:05:02 2008] [error] [client 212.58.116.72] PHP Warning:  reset() [<a href='function.reset'>function.reset</a>]: Passed variable is not an array or object in /var/www/db1/web/Conn/var.inc on line 9

в данном файле(var.inc ), на 9 строчке у меня написано: 

Код
for(reset($HTTP_POST_VARS); list($k,$v)=each($HTTP_POST_VARS);) {$$k=$v;}


что не так?
PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



При штатной работе - не должны. Это, мне кажется, само собой разумеется. Сообщения об ошибках код должен выдавать только при возникновении ошибок.

К примеру:
Есть код, который принимает данные из формы.
Если данные пришли, то код нормально отработал без ошибок.
Если данных нет - код выдает ошибку - "Нету такой переменной там, где вы ожидаете, что она должна быть".
Разработчик смотрит - опа, и правда, опечатку в имени сделал. И исправляет ошибку. 

Или малолетний хакир играется с формой, посылает не то, что ожидалось, а мы в логе смотрим - ага, что-то здесь было не то!

Вот для чего служат сообщения об ошибках.

чтобы исправить ситуацию сейчас, надо поставить вначале 
error_reporting(E_ALL ~E_NOTICE);

все остальные свои сайты разрабатывать при
error_reporting(E_ALL);

Чтобы при штатной работе они ошибок НЕ ВЫДАВАЛИ. Как это делают сейчас.
PM   Вверх
nicka47
Дата 11.7.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



или еще одна: 

[Fri Jul 11 09:05:28 2008] [error] [client 80.92.179.135] PHP Notice:  Undefined variable: id in /var/www/db1/web/index.php on line 50, referer: http://top.ge/search.php?q=er

У меня в коде в этом месте стоит небольшая операция с этой переменной, если переменная не определена, я не выполняю операцию, 

Код

$int = (int)$id;
return ((is_int((int)$id) && $id== (string)$int)) ? $id: 0;



допустим в урл строке эта переменная при данном запросе не передаеться, это уже ошибка?

Добавлено через 1 минуту и 25 секунд
Feldmarschall, вы не поняли, ошибки выдает не сайт, а апаче фиксирует и сохраняет в  логи.
PM MAIL   Вверх
Pokoinik
Дата 11.7.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 2
Всего: 3



Цитата(nicka47 @  11.7.2008,  10:54 Найти цитируемый пост)
что не так?

1. $HTTP_POST_VARS устаревший синтаксис, следует использовать $_POST;
2. $HTTP_POST_VARS не является массивом или объектом.
3. Ворненги, нотейсы и ошибки нужно исправлять.



--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
Feldmarschall
Дата 11.7.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(nicka47 @  11.7.2008,  11:10 Найти цитируемый пост)
вы не поняли, ошибки выдает не сайт, а апаче фиксирует и сохраняет в  логи. 

Оч. смешно. 
Я все прекрасно понимаю. 
Только выдает ошибки все равно сайт. А куда именно - определяется настройками. И пишет в логи PHP, а не апач. Это ошибки РНР, а не апача. С какой стати он будет чужие ошибки писать?

Сайт не выдает ошибки в браузер. но так и надо писать, а не "сайт не выдает ошибки"



Это сообщение отредактировал(а) Feldmarschall - 11.7.2008, 11:22
PM   Вверх
nicka47
Дата 11.7.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



error_reporting(E_ALL);

поставила это в начало страницы, и при загрузке сайта вышло огромное количество ошибок типа

Undefined variable: pp in C:\xampp\htdocs\site\index.php on line 323

получаеться я должна перед тем как выполнять например тако код:
Код

if ($pp=="ab") {
     include("aa/about.php"); 
}


я должна как то проверить пришла ли эта переменная pp ко мне? Так делают все?
А то что я делаю  - грубая ошибка написания кода?

Добавлено через 1 минуту и 47 секунд
Feldmarschall, ну так и знала, щас пойдут смеяться над моей неграммотностью.

Послушайте , я не за этим пришла сюда, я пришла сказать, что не знаю чего то, и прошу научить меня.

Добавлено через 10 минут и 47 секунд
Pokoinik, хорошо, поняла, значит это моя вина, все эти ошибки. А мы как то оправдывались...

Тогда помогите устранить их. Вот у меня вопрос выше насчет нобьявленных переменных. Как с этим моментом работать правильно?

И еще тогда вопрос, наверно вы в курсе будете, почему при таком моем изначальном неправильном подходе к написанию кода, во всех остальных проектах проблем с логами ан других серверах не было? Значит ли это, что возможно администраторы серверов как то ставят ограничение на размеры этих лог файлов, или что то подобное? 

И еще один вопрос, насколько такое кол-во элементарных ошибок при неккоректном написании кода, может тормозить работу сайта и перегружать сервер?
PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



nicka47, во-первых, не стоит апеллировать к таким вещам, как "я не за этим пришла сюда". Мало ли кто зачем приходит. Жизнь такая штука, что нам приходиться сталкиваться не с тем, с чем нам бы хотелось.
Во-вторых, смех - одна из самых положительных эмоций. Смех продлевает жизнь. Что в этом плохого - непонятно. 
В-третьих, я исправил свое сообщение, когда понял, что имеется в виду.

По поводу $HHTP_POST_VARS. На сервере стоит новая версия РНР, в которой эти устаревшие массивы отключены.

Цитата(nicka47 @  11.7.2008,  11:18 Найти цитируемый пост)
я должна как то проверить пришла ли эта переменная pp ко мне? Так делают все?
А то что я делаю  - грубая ошибка написания кода?

Ошибка, но по классификации разработчиков языка, не грубая.
PM   Вверх
nicka47
Дата 11.7.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



короче у меня весь сайт кишит операциями с необьявленными переменными Undefined variable, помогите хоть эту проблему устранить, научите как правильно надо обращаться к переменной, прежде чем начинать с нею какие то операции.
PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Сам код for(reset(... - из третьей версии РНР. А сейчас уже на подходе шестая
Для перебора ассоциативных массивов уже 10 лет, как используется оператор foreach.
заменить этот фикл надо таким:
foreach ($_POST as $k => $v) {
Другое дело, что сама по себе эта строчка представляет собой огромную дыру. С её помощью хакер может изменить любую переменную в коде.

Добавлено через 2 минуты и 16 секунд
Быстро решить проблемы с необъявленными переменными не получится. 
Надо переписывать весь код.

Быстро можно решить только проблему с сообщениями о таких переменных. Как - я уже писал.
PM   Вверх
nicka47
Дата 11.7.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



Feldmarschall, поняла, простите за реакцию, такой мой характер. 

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



Ошибка, но по классификации разработчиков языка, не грубая.  
- спасибо и на этом, вздохнула с облегчением.

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

Добавлено через 6 минут и 44 секунды
error_reporting(E_ALL ^ E_NOTICE);

значит, если это будет сидеть у меня на сайте, то все PHP Notice ошибки не будут фиксироваться? - замечательно для начала smile

Добавлено через 13 минут и 6 секунд
Код

error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING );


синтаксис верно записала? два раз по ^ ? вроде ошибки не выдает

значит таким образом  E_WARNING  тоже исключаем для штатной работы?  smile 


PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Нет. c warning-ом все гораздо хуже.
Если оно есть, это значит, что сайт просто не работает.

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

Добавлено через 1 минуту и 6 секунд
В принципе, если уж на то пошло, сделай error_reporting(0)
Никаких ошибок.
Логи - девственно чистые. Никаких забот.
PM   Вверх
nicka47
Дата 11.7.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



.no_delete - а что за файл сидит в папке с логами ? не подскажете его предназначени?


Цитата(Feldmarschall @  11.7.2008,  11:34 Найти цитируемый пост)
заменить этот фикл надо таким:
foreach ($_POST as $k => $v) {


у меня в var.inc  файле стоит след код, которые годами переноситься мною из одно проекта в другое, поскольку до сих пор все меня устраивало, то я не в никала в его глубинное назначение

Код

foreach($_GET as $k=>$v)
        $$k=addslashes($v);
        
    foreach($_POST as $k=>$v)
        $$k=addslashes($v);
        
   for(reset($HTTP_POST_VARS); list($k,$v)=each($HTTP_POST_VARS);) {$$k=$v;}





Цитата(Feldmarschall @  11.7.2008,  11:34 Найти цитируемый пост)
Другое дело, что сама по себе эта строчка представляет собой огромную дыру. С её помощью хакер может изменить любую переменную в коде.
 - какой ужас? это вы о каком коде? 

Код

foreach($_GET as $k=>$v)
 -об этом или
Код

 for(reset($HTTP_POST_VARS); 
 об этом???

хотя у меня и то и другое сидит...........

вообщем, прошу мне более подробно обяснить в чем дыра, как для самого непонятливого, пожалуйста

Добавлено @ 12:03
Feldmarschall,  нет, я имела в виду для ближайшего спасения, поскольку логи раздуваються, и с меня отчет.

А для решения, я все таки вас помочь тут мне. Например вопрос с необьявленными переменными - как надо делать это правильно, пока кажеться никто не написал??? 
Чтобы в дальнейшем придерживаться правильной манере написания кода, по мере моих умственных возможностей.


Цитата(Feldmarschall @  11.7.2008,  11:56 Найти цитируемый пост)
Нет. c warning-ом все гораздо хуже.
Если оно есть, это значит, что сайт просто не работает.


но как?? сайт у меня работает , а подобных в ворнингов в изучаемом мною сейчас логе мягко говоря до фига?? поясните пожулайста

Добавлено @ 12:06
[Fri Jul 11 09:05:34 2008] [error] [client 212.58.116.72] PHP Warning:  Call-time pass-by-reference has been deprecated - argument passed by value;  If you would like to pass it by reference, modify the declaration of fsockopen().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.  However, future versions may not support this any longer.  in /var/www/db/web/includes/mail_class.php on line 76


вот например одна из подобных ворнингов... это сидит в готовом классе для оправки писем. Что все это может означать? ведь письма с помощью этого класса у меня все таки стабильно отправляються...


вот такая строчка там на 76 строке:
Код

function send($server, $to, $from, $subject="", $headers="") { 


Добавлено @ 12:09
все  - поняла, это 2 основные ошибки моего кода. 
1 - необлявленные переменные (прошу помочь с решением)
2- это проблема с этим устаревшим кодом 
Код
for(reset($HTTP_POST_VARS); list($k,$v)=each($HTTP_POST_VARS);) {$$k=$v;}


Тема начинает приобретать более четкие очертания smile

Добавлено @ 12:13
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

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




Это сообщение отредактировал(а) nicka47 - 14.7.2008, 13:05
PM MAIL   Вверх
skyboy
Дата 11.7.2008, 12:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(nicka47 @  11.7.2008,  10:58 Найти цитируемый пост)
 сайт у меня работает

пробито у машины колесо. вроде как едет, но при поворте можно и разбиться.
warning означает реально нехорошие вещи.  конечно, может быть, что все эти варнинги приводят только к тому, что у тебя что-то не отображается при выводе... но все равно - рано или поздно сломается все. при таком подходе-то.
Цитата(nicka47 @  11.7.2008,  10:58 Найти цитируемый пост)
Например вопрос с необьявленными переменными - как надо делать это правильно, пока кажеться никто не написал??? 

надо просто подумать.
ты пытаешься работать с переменной, которая была необъявлена. тебе об этом говорится прямо. так объяви её. инициализируй каким-то значением по умолчанию. и будет нормально.
для проверки, задана ли переменная, существует функция isset. которая не выдает нотисы, а возвращает "false", если переменная не была определена.
Цитата(nicka47 @  11.7.2008,  10:58 Найти цитируемый пост)
какой ужас? это вы о каком коде? 

и тот, и тот код загоняет все полученные через GET/POST/COOKIE переменные в переменные кода. это практически механизм register_globals
учитывая, что ты ещё и не инициализируешь переменные, я могу передавать любые переменные через GET. и они будут приниматься твоим скриптом, как "родные". само по себе это ни плохо, ни хорошо. но потенциально - дыра в безопасности.
надо больше читать сообщения об ошибках. там, обычно, сразу указывается причина.
остается только исправить.

Добавлено через 1 минуту и 2 секунды
Цитата(nicka47 @  11.7.2008,  10:58 Найти цитируемый пост)
А для решения, я все таки вас помочь тут мне.

потрясающе smile
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1115 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.