Получить проблему BLOB MySQL PHP при передаче данных через брандмауэр веб-сервера - PullRequest
0 голосов
/ 15 июня 2011

Мы сталкиваемся с критической проблемой, связанной с извлечением BLOB-объектов из БД MySQL с использованием PHP и передачей через брандмауэр. Тот же PHP-код отлично работает, когда к БД обращаются напрямую с локального хоста, минуя веб-уровень.

Для уточнения вопроса -

У нас есть большие двоичные объекты, хранящиеся в БД MySQL, которые извлекаются с использованием простого кода PHP, который отлично работает на хостинге Godaddy Shared Hosting. Недавно мы перешли на Amazon EC2 / RDS, где настроены брандмауэры, и мы заметили эту проблему, что PHP-код извлекает правильный BLOB, но ненужные данные BLOB получаются с ответом, который поступает от Apache через брандмауэры. Тот же код, когда он подключается напрямую к RDS и извлекает тот же самый BLOB, он извлекается и отображается просто отлично.

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

Я так запутался в этом вопросе, почему, когда большие двоичные объекты выходят через веб-сервер, часть ответа просто показывает мусор. Я попытался добавить заголовки и т. Д., И все ничего не работает, когда ответ через веб-серверы. Я не думаю, что проблема в коде PHP, который хранит и извлекает большие двоичные объекты в MySQL и из него.

Могут ли быть настройки брандмауэра или конфигурации Apache на EC2, которые могут повредить передаваемые BLOB-данные? Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Из того, что вы публикуете в своем вопросе, это выглядит как проблема кодировки между клиентом базы данных (вашим веб-сервером) и сервером базы данных (amazon EC2).Просто дважды проверьте настройки клиента и сервера базы данных и убедитесь, что данные, хранящиеся в базе данных, также правильно закодированы.

Я пишу так, потому что запрос проходит, только данные BLOB искажаются.Так что это не похоже на проблему с брандмауэром.

Более подробная информация и ссылки доступны в аналогичной проблеме .

0 голосов
/ 16 июня 2011

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

В моем PHP-коде, который извлекает BLOB, у меня была строка подключения db, которую я заменил включающим "DBCon.inc"и я поместил учетные данные БД в этот файл.

Угадайте, что ... файл DBCon.inc содержал две пустые строки или что-то вроде этого перед концом PHP?>

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

Удалены пробелы в этом файле и Вуаля !!все работает так же, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...