Есть проблема в выборе бинарных данных из таблицы. Исторически так сложилось, что пароль хранится в поле типа binary(64) в БД MS SQL Есть скрипт который выбирает пароль, пример:
$pdo = new PDO('sqlsrv:Server=8.8.8.8;Database=test', 'vova', 'megasecretpassword');
$sql = "SELECT Password FROM users WHERE Email = 'vova@kremlin.ru'";
$res = $pdo->query($sql);
$data = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($data);
Результат в Linux Apache поле password будет такой:
55A5560F37D53FCA2DD4DE1032BDC3E1B4A2727C5CAF70 ...
А вот в Windows IIS вот такой:
U�V7�?�-��2��ᴢr|\�p� ...
Вопрос, что нужно сделать чтобы было везде одинаково? Спасибо!
P.S функция bin2hex приводит вариант из Windows к варианту из Linux
P.P.S сервер MS SQL в обоих случаях один и тот же.
Как я уже написал в комментариях, IIS возвращает вам нормальный результат, печатает полученные бинарные данные, и на экране видим то, что видим. В случае linux почему то драйвер переводит бинарные данные в текстовую форму. Это не корректное поведение, он не должен ничего с ними делать.
Но этим багом вы похоже давно и успешно пользуетесь. Может не конкретно этот, но аналогичный баг описан здесь: https://bugs.php.net/bug.php?id=40913 Цитата из статьи по теме:
Unfortunately there’s a bug which means that instead of returning a stream into $lob PDO returns a string containing the binary data.
Описание бага было создано 10 лет назад, и переоткрыто в 2017м году для пхп версии 7. Причем судя по всему, он так и не был пофиксен, в обсуждениях перечислены все версии от 5.2 до 7й, причем упомянаются как nix так и windows системы. С этой точки зрения даже странно, что ваш IIS отдает контент корректно.
В любом случае, поскольку для вашей задачи получить-то надо как раз hex-строку то получайте ее уже на выходе с сервера, например, select convert(varchar(64),password,2) as password
.
зы: не проверял
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Если функция CreateFile вернула INVALID_HANDLE_VALUE, нужно ли закрывать его функцией CloseHandle?
Здравствуйте! Возникла такая проблемаНадо реализовать вращение такой фигуры
Решите пж Дано число nЧи вірно, що це число містить рівно 3 однакових цифри
Рассмотрим такой вариант реализации постфиксного оператора инкрементированияПочему требуется возвращать именно const T, а не T? Такой вариант...