Загрузка изображения из базы данных с противоречивыми результатами на серверах - PullRequest
1 голос
/ 05 июля 2011

Я загружаю изображения из одной базы данных PostgreSQL, которая в настоящее время используется моими производственными и разрабатываемыми экземплярами.Это уже немного неточно - рабочий сервер еще не запущен, поэтому нормально, что они совместно используют БД.Само программное обеспечение написано на PHP5.3.

Проблема заключается в следующем: моя процедура хранения изображений работает на обоих серверах.Изображение, сохраненное с использованием любой ветви, можно правильно отобразить в производственной ветви.Однако изображения полностью недоступны для просмотра на производственной стороне.

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

‰PNG IHDR99zÒ IDAThL&³Ùaaaýýýþþþþþþþþþýýýýýý" ø÷øëðïêññçîîàëêßêêìööPPP;'(8&'"þþúúüýýýþþÿþõÛëìÇÙÙÈÞÝòúúLLL P45B-,üý÷÷ýýÿÿÿÿþþþÿýýþþÿÿþþÿ íÿºÒÒµÕÔòúúKKKÿÿÿF**]=?ýýõõÿÿÿ

, в то время как сервер разработки поставляет (выдержка):

x89504e470d0a1a0a0000000d4948445200000039000000390802000000037a14d200002000494441546805014c26b3d9016161610000000000000000000000000000000000000000000000000000000000000000000000000000000

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

Соответствующий код, по-видимому, идентичен между экземплярами.Изучение php.ini дает только незначительные различия, связанные с сообщениями об ошибках.Я почти уверен, что это проблема связи с сервером, но я не знаю, что именно вызывает ее.

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Вы получили несоответствие конфигурации:

http://www.postgresql.org/docs/9.0/static/runtime-config-client.html#GUC-BYTEA-OUTPUT

1 голос
/ 05 июля 2011

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

Как вы можете см. здесь 89 50 4E 47 0D 0A 1A 0A - магическое число для файлов png, и если вы преобразуете его в ascii, вы получите \211 P N G \r \n \032 \n, который является содержимым первых 8 байт первого вывода.

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

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

И наоборот, если выходные данные отличаются на уровне postgres, вам следуетисследуйте настройки postgres на обоих серверах.

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