Laravel Valet не обслуживает файлы JPEG без расширения

Laravel Valet обслуживает jpeg-файлы без расширения с неправильным размером и, конечно же, измененной контрольной суммой. Я публикую информацию о файле примера, файл с .0 в конце скачивается через камердинер.

$ls -la
f2b40f33d19b147bc8d0e88f4b8c489e35c165dd
-rw-r--r--   23905
f2b40f33d19b147bc8d0e88f4b8c489e35c165dd.0
-rw-r--r--   23750 

$ls -la
$ md5 f2b40f33d19b147bc8d0e88f4b8c489e35c165dd
MD5 (f2b40f33d19b147bc8d0e88f4b8c489e35c165dd) = 9b5d3e104764e4b4c2b9e942704091f1
$ md5 f2b40f33d19b147bc8d0e88f4b8c489e35c165dd.0
MD5 (f2b40f33d19b147bc8d0e88f4b8c489e35c165dd.0) = 944e47ce0ccd4da18b7761af0e5f0226

Я попытался добавить MIME в CaddyFile, но кажется, что Caddy не поддерживает MIME для файлов без расширения. Я попробовал следующее:

mime . image/jpeg
mime .* image/jpeg
mime * image/jpeg

Тот же файл с .jpeg расширение в порядке, что не так?

1 ответ

Решение

Камердинер использует mimes.php в ValetDriver.php чтобы определить правильный тип контента на основе расширения файла:

...
"jpeg" => "image/jpeg",
"jpg" => "image/jpeg",
"jpe" => "image/jpeg",
...

Вы можете добавить пустое расширение там, чтобы служить всем без расширения как image/jpeg

"" => "image/jpeg"

Тем не менее, Valet не должен сервер файлов с пустым расширением, вы получаете уведомление, которое ломает изображение

Notice: Undefined index: extension in ...cli\drivers\ValetDriver.php on line 121

В качестве быстрого взлома вы можете изменить строку #121 в ~/.composer/vendor/cli/drivers/ValetDriver.php подавить уведомление

@$extension = pathinfo($staticFilePath)['extension'];
Другие вопросы по тегам