S3 Bucket Prefix doesn't work with Glide transformations
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 39/100
Línea de trabajo
Start by reading the ImageGenerator class, especially parseUrl and the doGenerateByUrl/doGenerateByAsset paths identified in the issue. Reproduce the reported behavior with a scoped S3 disk and a Glide tag using an asset URL, then check or add a regression test for that case. Done means the transformation handles the prefixed URL without duplicating the bucket prefix.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug description
I added a folder to the root of the s3 bucket, and pointed the filesystem disks at said folder using the league/flysystem-path-prefixing package. So my filesystem looks something like this:
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'eu-west-2'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL').(env('AWS_PREFIX'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'visibility' => 'public',
],
'images' => [
'driver' => 'scoped',
'disk' => 's3',
'prefix' => 'images',
],
'glide' => [
'driver' => 'scoped',
'disk' => 's3',
'prefix' => 'glide'
]
The images folder works fine and I can see the assets fine in the control panel. However, the glide transformations only work if you use the asset value in the glide tag rather than the url. For example:
This works:
{{ glide:image w="100" h="100" }}
and produces:
https://{bucket}.s3.eu-west-2.amazonaws.com/{bucket_prefix}/glide/containers/images/{image_path}
But this doesn't work
{{ glide:image:url w="100" h="100" }}
and adds the bucket_prefix again after the http:
https://{bucket}.s3.eu-west-2.amazonaws.com/{bucket_prefix}/images/http/{bucket_prefix}/images/{image_path}
At first I thought I could change all of my glide tags to use the asset value rather than url, however, (as far as I'm aware) I can't do this when looping through a series of images.
It's obviously quite a niche bug as I'm sure most people don't need to use prefix.
How to reproduce
Create an S3 bucket with a root folder. Point the disks at the s3 bucket. Use the glide tag and use the asset url or id in the src.
Logs
Environment
Environment
Application Name: redacted
Laravel Version: 10.49.1
PHP Version: 8.3.26
Composer Version: 2.9.2
Environment: staging
Debug Mode: ENABLED
URL: redacted
Maintenance Mode: OFF
Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: NOT CACHED
Drivers
Broadcasting: log
Cache: statamic
Database: mysql
Logs: stack / single
Mail: smtp
Queue: sync
Session: file
Statamic
Addons: 8
Antlers: runtime
Sites: 1
Stache Watcher: Enabled
Static Caching: Disabled
Version: 4.58.3 PRO
Statamic Addons
anakadote/statamic-recaptcha: 1.0.18
mitydigital/iconamic: 1.1.6
studio1902/statamic-peak-browser-appearance: 1.0
studio1902/statamic-peak-commands: 1.27
studio1902/statamic-peak-seo: 8.17.0
studio1902/statamic-peak-tools: 2.5
tfd/statamic-aida: 1.0.1
xndbogdan/statamic-bard-text-color: 4.0.0
Installation
Starter Kit using via CLI
Additional details
Looking at the statamic core files I suspect it's an issue with the parseUrl in the ImageGenerator class, as doGenerateByUrl makes a call to this function but doGenerateByAsset doesn't.
- Lenguaje dominante
- PHP
- Estrellas
- 4.9k
- Forks
- 647
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 100
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de statamic/cms
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
assets
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Make native filesystem directory permissions configurable to support shared POSIX ACL accessAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
accessibility
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
antlers
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
Todos los issues de statamic/cms
Issues similares
-
No Code Attached Yet
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
joomla/joomla-cms#48611 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Automattic/safe-publish#716 ·
Los mantenedores suelen responder en 1 día
-
FrameworkBundle SecurityBundle
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
symfony/symfony-docs#23277 ·
Los mantenedores suelen responder en 3 días
-
[Sync EN] hard link does not need special permissionsPosiblemente ocupada @lacatoire la tomó hoy. Abiertosync-en
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día