![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2005 Где: Грузия Репутация: нет Всего: нет |
Сайт создает огромные error.log логи, почему то на всех остальных сайтах подобная проблема никогда не вставала, то ли на других серверах происходит какой то контроль за логами, ограничение их размеров.
Поскольку система написания кодов одна, то такая же проблема с ошибками должна была вставать на всех остальных сайтах. типы ошибок - PHP Warning, PHP Notice лог раздуваеться за пару часов до нескольких мегабайт, наверно это ненормально, можно ли исходя из такого количества ошибок сделать вывод, что они могут приводить сервер к зависанию? Понимаю, что без представления тут конкретных ошибок, трудно ответить. Но меня пока интересуют ощие ответы на вопросы, типа способы работы с лог файлами. Должен ли контролировать их создатель сайта, или это задача администратора сервера. Нормальное ли дело такое количество ошибок, если учитывать, что сайт достаточно большой, и работает правильно. ПОрядок уникальных посетителей небольшой, приблизительно 500 человек |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
||||
|
||||
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 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 строчке у меня написано:
что не так? |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
При штатной работе - не должны. Это, мне кажется, само собой разумеется. Сообщения об ошибках код должен выдавать только при возникновении ошибок.
К примеру: Есть код, который принимает данные из формы. Если данные пришли, то код нормально отработал без ошибок. Если данных нет - код выдает ошибку - "Нету такой переменной там, где вы ожидаете, что она должна быть". Разработчик смотрит - опа, и правда, опечатку в имени сделал. И исправляет ошибку. Или малолетний хакир играется с формой, посылает не то, что ожидалось, а мы в логе смотрим - ага, что-то здесь было не то! Вот для чего служат сообщения об ошибках. чтобы исправить ситуацию сейчас, надо поставить вначале error_reporting(E_ALL ~E_NOTICE); все остальные свои сайты разрабатывать при error_reporting(E_ALL); Чтобы при штатной работе они ошибок НЕ ВЫДАВАЛИ. Как это делают сейчас. |
|||
|
||||
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 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 У меня в коде в этом месте стоит небольшая операция с этой переменной, если переменная не определена, я не выполняю операцию,
допустим в урл строке эта переменная при данном запросе не передаеться, это уже ошибка? Добавлено через 1 минуту и 25 секунд Feldmarschall, вы не поняли, ошибки выдает не сайт, а апаче фиксирует и сохраняет в логи. |
|||
|
||||
Pokoinik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 17.3.2007 Где: /dev/null Репутация: 2 Всего: 3 |
1. $HTTP_POST_VARS устаревший синтаксис, следует использовать $_POST; 2. $HTTP_POST_VARS не является массивом или объектом. 3. Ворненги, нотейсы и ошибки нужно исправлять. -------------------- ICQ: 490-993 Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!! Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают. Делай или не делай! Никаких попробую! Йода (Yoda), мастер-джедай |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Оч. смешно. Я все прекрасно понимаю. Только выдает ошибки все равно сайт. А куда именно - определяется настройками. И пишет в логи PHP, а не апач. Это ошибки РНР, а не апача. С какой стати он будет чужие ошибки писать? Сайт не выдает ошибки в браузер. но так и надо писать, а не "сайт не выдает ошибки" Это сообщение отредактировал(а) Feldmarschall - 11.7.2008, 11:22 |
|||
|
||||
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2005 Где: Грузия Репутация: нет Всего: нет |
error_reporting(E_ALL);
поставила это в начало страницы, и при загрузке сайта вышло огромное количество ошибок типа Undefined variable: pp in C:\xampp\htdocs\site\index.php on line 323 получаеться я должна перед тем как выполнять например тако код:
я должна как то проверить пришла ли эта переменная pp ко мне? Так делают все? А то что я делаю - грубая ошибка написания кода? Добавлено через 1 минуту и 47 секунд Feldmarschall, ну так и знала, щас пойдут смеяться над моей неграммотностью. Послушайте , я не за этим пришла сюда, я пришла сказать, что не знаю чего то, и прошу научить меня. Добавлено через 10 минут и 47 секунд Pokoinik, хорошо, поняла, значит это моя вина, все эти ошибки. А мы как то оправдывались... Тогда помогите устранить их. Вот у меня вопрос выше насчет нобьявленных переменных. Как с этим моментом работать правильно? И еще тогда вопрос, наверно вы в курсе будете, почему при таком моем изначальном неправильном подходе к написанию кода, во всех остальных проектах проблем с логами ан других серверах не было? Значит ли это, что возможно администраторы серверов как то ставят ограничение на размеры этих лог файлов, или что то подобное? И еще один вопрос, насколько такое кол-во элементарных ошибок при неккоректном написании кода, может тормозить работу сайта и перегружать сервер? |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
nicka47, во-первых, не стоит апеллировать к таким вещам, как "я не за этим пришла сюда". Мало ли кто зачем приходит. Жизнь такая штука, что нам приходиться сталкиваться не с тем, с чем нам бы хотелось.
Во-вторых, смех - одна из самых положительных эмоций. Смех продлевает жизнь. Что в этом плохого - непонятно. В-третьих, я исправил свое сообщение, когда понял, что имеется в виду. По поводу $HHTP_POST_VARS. На сервере стоит новая версия РНР, в которой эти устаревшие массивы отключены.
Ошибка, но по классификации разработчиков языка, не грубая. |
|||
|
||||
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2005 Где: Грузия Репутация: нет Всего: нет |
короче у меня весь сайт кишит операциями с необьявленными переменными Undefined variable, помогите хоть эту проблему устранить, научите как правильно надо обращаться к переменной, прежде чем начинать с нею какие то операции.
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Сам код for(reset(... - из третьей версии РНР. А сейчас уже на подходе шестая
Для перебора ассоциативных массивов уже 10 лет, как используется оператор foreach. заменить этот фикл надо таким: foreach ($_POST as $k => $v) { Другое дело, что сама по себе эта строчка представляет собой огромную дыру. С её помощью хакер может изменить любую переменную в коде. Добавлено через 2 минуты и 16 секунд Быстро решить проблемы с необъявленными переменными не получится. Надо переписывать весь код. Быстро можно решить только проблему с сообщениями о таких переменных. Как - я уже писал. |
|||
|
||||
nicka47 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2005 Где: Грузия Репутация: нет Всего: нет |
Feldmarschall, поняла, простите за реакцию, такой мой характер.
Насчет неграммотных моих замечаний, да я всегда от этого страдала, по причине отсутствия базовых знаний, но необходимости все же как то реагировать на возникающие проблемы. Ошибка, но по классификации разработчиков языка, не грубая. - спасибо и на этом, вздохнула с облегчением. Но придеться на нею все таки поработать, так как логи разбухаються во основном за их счет. Добавлено через 6 минут и 44 секунды error_reporting(E_ALL ^ E_NOTICE); значит, если это будет сидеть у меня на сайте, то все PHP Notice ошибки не будут фиксироваться? - замечательно для начала ![]() Добавлено через 13 минут и 6 секунд
синтаксис верно записала? два раз по ^ ? вроде ошибки не выдает значит таким образом E_WARNING тоже исключаем для штатной работы? ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Нет. c warning-ом все гораздо хуже.
Если оно есть, это значит, что сайт просто не работает. Сама идея так сделать меня огорчает зело. Как я и ожидал, возможность сунуть голову в песок и не видеть сообщений об ошибках, оказалась гораздо привлекательнее, чем ошибки исправлять. Добавлено через 1 минуту и 6 секунд В принципе, если уж на то пошло, сделай error_reporting(0) Никаких ошибок. Логи - девственно чистые. Никаких забот. |
|||
|
||||
nicka47 |
|
||||||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2005 Где: Грузия Репутация: нет Всего: нет |
.no_delete - а что за файл сидит в папке с логами ? не подскажете его предназначени?
у меня в var.inc файле стоит след код, которые годами переноситься мною из одно проекта в другое, поскольку до сих пор все меня устраивало, то я не в никала в его глубинное назначение
хотя у меня и то и другое сидит........... вообщем, прошу мне более подробно обяснить в чем дыра, как для самого непонятливого, пожалуйста Добавлено @ 12:03 Feldmarschall, нет, я имела в виду для ближайшего спасения, поскольку логи раздуваються, и с меня отчет. А для решения, я все таки вас помочь тут мне. Например вопрос с необьявленными переменными - как надо делать это правильно, пока кажеться никто не написал??? Чтобы в дальнейшем придерживаться правильной манере написания кода, по мере моих умственных возможностей.
но как?? сайт у меня работает , а подобных в ворнингов в изучаемом мною сейчас логе мягко говоря до фига?? поясните пожулайста Добавлено @ 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 строке:
Добавлено @ 12:09 все - поняла, это 2 основные ошибки моего кода. 1 - необлявленные переменные (прошу помочь с решением) 2- это проблема с этим устаревшим кодом
Тема начинает приобретать более четкие очертания ![]() Добавлено @ 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 |
||||||||||||||||
|
|||||||||||||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
пробито у машины колесо. вроде как едет, но при поворте можно и разбиться. warning означает реально нехорошие вещи. конечно, может быть, что все эти варнинги приводят только к тому, что у тебя что-то не отображается при выводе... но все равно - рано или поздно сломается все. при таком подходе-то.
надо просто подумать. ты пытаешься работать с переменной, которая была необъявлена. тебе об этом говорится прямо. так объяви её. инициализируй каким-то значением по умолчанию. и будет нормально. для проверки, задана ли переменная, существует функция isset. которая не выдает нотисы, а возвращает "false", если переменная не была определена. и тот, и тот код загоняет все полученные через GET/POST/COOKIE переменные в переменные кода. это практически механизм register_globals учитывая, что ты ещё и не инициализируешь переменные, я могу передавать любые переменные через GET. и они будут приниматься твоим скриптом, как "родные". само по себе это ни плохо, ни хорошо. но потенциально - дыра в безопасности. надо больше читать сообщения об ошибках. там, обычно, сразу указывается причина. остается только исправить. Добавлено через 1 минуту и 2 секунды потрясающе ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |