Перейти к содержанию
Rinz

мистические id-терминаторы

Рекомендуемые сообщения

вот это увлекательный вечер у меня...

 

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

Вчера утром легла главная страница сайта с ошибкой 500. Естественно, первая мысль - на файлы. Но, после восстановления бекапа сайта, он не поднялся, а все исправилось после отката базы.

Заказчик был расстроен, что кучу работы переделывать.

 

а я думаю - почему база положила только главную, да еще и с internal server error?

в логах это: 

malformed header from script. Bad header=HTTP1.0/1.1 404 Not Found: index.php

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

 

сегодня вечером все повторяется. Владелец сайта говорит, что в этот момент работал с фильтром товаров, уронил сайт явно он, по логам вижу.

и начались пляски  с бубном.

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

Сайт снова поднялся после отката базы.

После пару часов сравнения таблиц и вычисления виновника, оказалось, что виноваты два айдишника.

 

есть таблицы:

category_option - id опции;

category_option_description -  id опции, имя опции;

category_option_value -  id значений опции, id соответствующей опции;

category_option_value_description - названия значений опции и  id опции.

 

В category_option_value_description присутствовали несколько строк с id опций 50 и 55. только их удаляю - сайт поднимается. Добавляю - ложится. никаких спецсимволов и прочего - просто текст. изменение их названий не помогло. В других таблицах - наоборот: удаляю записи - сайт падает. Добавляю - работает. Все уперлось именно в эти два айдишника.

 

Из админки добавляю им значений - ложится сайт.

удаляю вообще эти опции с этими айдишниками - ложится.

Меняю что угодно на что угодно - то же самое.

 

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

 

Как бы можно оставить и так и стараться никогда в админке не заходить в эти две опции. Но некрасиво же..

 

Собственно, вопросы:

1. Почему наличие этих строк ложит главную страницу?

2. Почему вообще БД роняет сайт с ошибкой 500 Internal Server Error?

3. Что это за ошибка в логе и как это он не может найти index.php?

4. Как удалить вообще все упоминания об этих опциях, ведь если записи идут дальше по порядку, значит можно?

 

Меня больше волнует второй вопрос, конечно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ошибку 500 смотрите в логах сервера, там должно быть больше информации об ошибке. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ошибку 500 смотрите в логах сервера, там должно быть больше информации об ошибке. 

это все, что было в логах сервера..

Техподдержка сказала - восстанавливайте рабочий бекап.

в логах сайта, естественно, ничего нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А случайненько ничего в куках не хранится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фильтр от SooR`a?

>> В category_option_value_description присутствовали несколько строк с id опций 50 и 55.

если по кол-ву языков - так и должно быть.

2. ну так смотри логи

3.

Bad header=HTTP1.0/1.1
как вариант:

сервер/браузер не поддерживает один из протоколов. найди в коде и укажи только поддерживаемый.

4. как бы... руками. смотри связи столбцов. возможно они связаны с другими таблицами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фильтр от SooR`a?

нет

 

если по кол-ву языков - так и должно быть.

 

нет, имелось в виду, что одной опции было назначено несколько значений, поэтому и несколько строк. язык один и он тут ни при чем

 

2. ну так смотри логи

логи чего? мускуля? все что было в логах, и это было в error логе Апача, в первом сообщении.

я перефразирую вопрос: как база данных может вообще вызывать 500 ошибку, если 500 ошибка - это "сервер не может обработать запрос"? База же работает, данные отдает. это же не незакрытая скобка в коде.

 

сервер/браузер не поддерживает один из протоколов. найди в коде и укажи только поддерживаемый.

Опять же, как наличие каких-то значений в таблице фильтра базы может влиять на протокол передачи данных?

 

4. как бы... руками. смотри связи столбцов. возможно они связаны с другими таблицами

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так что там с куками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Rinz, первый заход в google ставит точку:

malformed header from script. Bad header=HTTP1.0/1.1 404 Not Found
ботва с генерируемым магазином заголовком (где-то в коде фильтра, судя по твоим рассказам).

смотри, что отправляется и возвращается в заголовках.

ищи, ГДЕ это формируется, и исправляй.

кроме того есть вероятность, что ты глобально запорол отдачу заголовка "404 Not Found" - попробуй вызвать его на других страницах (другим способом).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.