Server configuration
Symfony 4.4.2
Apache 2.4.29
PHP: 7.3
Hosting: AWS LightSail
I use the liip_imagine bundle to process uploaded images and display them in twig templates using asset()
. Unfortunately, the images URL resolves to 404 and I cannot figure out why.
Here is the relevant twig templating :
<div class="col">
<p>{{ 'Current image' | trans }}</p>
{% if module.image != '' %}
<img style="width: 180px;" src="{{ asset(module.image | imagine_filter('learningModuleImage')) }}" alt="">
{% endif %}
</div>
I checked this:
da305b9a0fee3eb7bdc5bfc9b64e88ff.jpeg
/public/upload/da305b9a0fee3eb7bdc5bfc9b64e88ff.jpeg
The generated url: https://domain.tld/media/cache/learningModuleImage/da305b9a0fee3eb7bdc5bfc9b64e88ff.jpeg
The configuration:
liip_imagine:
loaders:
default:
filesystem:
data_root:
- "%kernel.project_dir%/public/upload"
- "%kernel.project_dir%/public/assets/img"
resolvers:
default:
web_path:
web_root: "%kernel.project_dir%/public/upload"
cache_prefix: media/cache
filter_sets:
cache: ~
learningModuleImage:
filters:
downscale:
max: [512, 512]
profile:
filters:
downscale:
max: [512, 512]
# the name of the "filter set"
thumb:
# adjust the image quality to 75%
# quality: 75
# list of transformations to apply (the "filters")
filters:
# create a thumbnail: set size to 120x90 and use the "outbound" mode
# to crop the image when the size ratio of the input differs
thumbnail: { size: [128, 128], mode: outbound }
# create a 2px black border: center the thumbnail on a black background
# 4px larger to create a 2px border around the final image
# background: { size: [124, 94], position: center, color: '#000000' }
I also checked the Virtual Host :
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName domain.tld
DocumentRoot /var/www/project/public
DirectoryIndex /index.php
<Directory /var/www/project/public>
AllowOverride All
Order Allow,Deny
Allow from All
Options -MultiViews
Require all granted
FallbackResource /index.php
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-project.log
CustomLog ${APACHE_LOG_DIR}/access-project.log combined
# Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
I solved it!
Here is the working configuration. Thank you @MaulikParmar for your tip!
liip_imagine:
loaders:
default:
filesystem:
data_root:
- "%kernel.project_dir%/public/upload"
- "%kernel.project_dir%/public/assets/img"
resolvers:
default:
web_path:
web_root: "%kernel.project_dir%/public"
cache_prefix: media/cache
filter_sets:
cache: ~
learningModuleImage:
cache: default
filters:
downscale:
max: [512, 512]
profile:
filters:
downscale:
max: [512, 512]
# the name of the "filter set"
thumb:
# adjust the image quality to 75%
# quality: 75
cache: default
# list of transformations to apply (the "filters")
filters:
# create a thumbnail: set size to 120x90 and use the "outbound" mode
# to crop the image when the size ratio of the input differs
thumbnail: { size: [128, 128], mode: outbound }
# create a 2px black border: center the thumbnail on a black background
# 4px larger to create a 2px border around the final image
# background: { size: [124, 94], position: center, color: '#000000' }