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'];