У меня есть веб-приложение 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 МБ), и изображение не может быть открыто в некоторых программах просмотра изображений.