Я пытаюсь получить размеры файла изображения, который успешно загружается в мою общедоступную папку/папку изображений, которая правильно символически связана через Laravel с хранилищем/общедоступной папкой. Я использую функцию PHP getimageinfo.
Чтобы сохранить файл, я использовал встроенный ->store('pathtodirectory', 'public') для сохранения файла на сервере, который работает. Он правильно возвращает путь/имя файла, связанное с изображением, и правильно сохраняет файл, который я могу подтвердить и просмотреть.
Однако! Когда я пытаюсь использовать функцию getimageinfo, она сообщает мне «не удалось открыть поток: нет такого файла или каталога». Я попытался использовать функции Storage::url и storage_path, чтобы получить путь к файлу и передать его в getimageinfo. Я также пытался использовать функцию Laravel asset. Ничего не работает.
Что мне не хватает?
Код:
$photo = $request->file('image');
$imageFilePath = $photo->store('images', 'public');
$imageDimensions = getImageSize(Storage::url($imageFilePath));<--Fails here
Мой конфиг/filesystems.php:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
Вы используете второй аргумент в store, который указывает диск для хранения (в данном случае public), но при его извлечении вы используете диск по умолчанию, который может не быть public
@SahilGupta - я как раз собирался отредактировать свой вопрос, включив в него уточнение, что ответ, который я получаю, «не удалось открыть поток: нет такого файла или каталога». Как распечатать это в логах?
@apokryfos - как мне получить доступ из того же «общедоступного» места? Какой бы вариант я ни выбрал, путь правильный (либо системный путь к ресурсу, либо то, что я думаю, является относительным путем, который использует Laravel... я понятия не имею, что это такое).






Ok. Сначала жалобы... Документация Laravel - это мусор, когда вам нужно что-то, кроме введения (т.е. фактического создания приложения). Это не должно было занять у меня два дня, чтобы отследить этот ответ. Который:
getImageSize(Storage::disk('public')->path($imageFilePath));
Я бы хотел, чтобы Laravel раскрывал в своей документации вызываемые методы, доступные для ресурса.
Пожалуйста, напечатайте
Storage::url($imageFilePath)в журналах и проверьте, есть ли изображение на этом пути или нет? Если изображение существует, проверьте, есть ли у него разрешение или нет?