Я пытаюсь прочитать некоторые двоичные данные из инструмента командной строки с PHP на Windows. Изначально инструмент был мерзавец, но я могу воспроизвести проблему с тип а также (чтобы убедиться, что нет Git autocrlf происходит).
Я не уверен, что происходит, но где-то на пути окончания строк, кажется, преобразованы. Отметим, …
В командной строке:
# dir temp
18.01.2015 03:24 1.362 temp
В PHP:
$data = `type d:\\temp`;
echo strlen($data); // outputs "1302"echo strlen(str_replace("\n", "\r\n", $data)); // outputs "1362"echo strlen(file_get_contents('d:\\temp')); // outputs "1362"
Что здесь происходит? Как я могу получить стенографические данные?
file_get_contents()
получит вам дословные данные, бинарный сейф. Избегайте таких вещей, как ОС type
ты использовал.
Попробуйте использовать другие методы вместо обратных кавычек, например passthru
например:
ob_start();
passthru("git command blah blah");
$var = ob_get_clean();
echo strlen($var);
Обходной путь, который я нашел, состоит в следующем:
ob_start();
passthru('type d:\\temp');
$data = ob_get_clean();