Использование passthru () для загрузки файла приводит к повреждению / изменению файла - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть веб-приложение PHP Yii2, которое запускает скрипт командной строки, используя passthru().Результат passthru() должен быть передан в загруженный файл, чтобы пользователь мог загрузить вывод passthru().

Пример:

Если я выполню следующую командную строку:

$ /bin/cat /PATH/pic.jpg > output.jpg

... Я получаю файл output.jpg, который идентичен pic.jpg (та же контрольная сумма md5)

Но мне нужно запустить этот механизм в веб-приложении:

Если я делаю то же самое, используя passthru() для отправки файла в браузер пользователей:

            header("Cache-Control: private");
            header("Content-Type: application/octet-stream");
            header("Content-Disposition: attachment; filename=download.jpg");
            passthru ('/bin/cat /PATH/pic.jpg');

.... тогда я получаю download.jpg, который не похож на pic.jpg В этом примере download.jpg на 1126 байт меньше (размер изображения составляет около 13 МБ), и изображение не может быть открыто в некоторых программах просмотра изображений.

...