VichUploaderBundle an Gaufrette - symfony

"vich/uploader-bundle": "^1.4.2" and "knplabs/knp-gaufrette-bundle": "0.5"
Symfony 3
my config:
vich_uploader:
db_driver: orm
storage: gaufrette
mappings:
customer_logo:
uri_prefix: /upload/customer_logos
upload_destination: customer_logo_fs
namer: ~
directory_namer: vich_uploader.directory_namer_subdir
inject_on_load: false
delete_on_update: true
delete_on_remove: true
knp_gaufrette:
stream_wrapper: ~
adapters:
user_photo:
local:
directory: '%kernel.project_dir%/var/uploads/user/photos'
create: true
filesystems:
customer_logo_fs:
adapter: customer_logo_adapter
ERROR
[Symfony\Component\DependencyInjection\Exception\AutowiringFailedException]
Cannot autowire service "AppBundle\Twig\Base64Extension": argument "$storag
e" of method "__construct()" references interface "Vich\UploaderBundle\Stor
age\StorageInterface" but no such service exists. You should maybe alias th
is interface to one of these existing services: "vich_uploader.storage.file
_system", "vich_uploader.storage.gaufrette".

AppBundle\Twig\Base64Extension:
arguments: ['#vich_uploader.storage.gaufrette']
public: true

Related

LiipImagineBundle + KNPGaufrette + VichUploaderBundle + Amazon S3 can't generate thumbnails on S3

When trying to use LiipImagineBundle + VichUploaderBundle and Amazon S3, I'm encountering a weird issue. When I upload a file via my Symfony form (using the VichFileType form field), the file is successfully created on Amazon S3 (via Gaufrette). When I display the uploaded file in my twig view, it displays perfectly.
However, when I'm trying to generate a thumbnail of the file (which was uploaded on S3), I get the following error :
The service "liip_imagine.cache.resolver.amazon_s3" has a dependency
on a non-existent service "1".
I've followed the documentation : https://symfony.com/doc/2.0/bundles/LiipImagineBundle/cache-resolver/aws_s3.html
Here's my app/config/config.yml file:
# VichUploaderBundle Configuration
vich_uploader:
db_driver: orm
twig: true
storage: gaufrette
mappings:
campaign_image:
uri_prefix: "%aws_base_url%/%aws_bucket_name%/uploads/campaigns"
upload_destination: campaign_image_fs
namer: vich_uploader.namer_uniqid
delete_on_remove: true
delete_on_update: true
inject_on_load: true
user_identity:
uri_prefix: "%aws_base_url%/%aws_bucket_name%/uploads/users"
upload_destination: user_identity_fs
namer: vich_uploader.namer_uniqid
delete_on_remove: true
delete_on_update: true
inject_on_load: true
# LiipImagineBundle Configuration
liip_imagine:
driver: imagick
cache: amazon_s3
resolvers:
amazon_s3:
aws_s3:
client_config:
credentials:
key: "%aws_bucket_key%"
secret: "%aws_bucket_secret%"
region: "%aws_bucket_region%"
bucket: "%aws_bucket_name%"
version: "2006-03-01"
bucket: "%aws_bucket_name%"
cache: true
get_options:
Scheme: https
put_options:
CacheControl: "max-age=86400"
filter_sets:
cache: ~
800x600:
quality : 93
filters:
auto_rotate: ~
strip: ~
scale:
dim: [ 500, 800 ]
# KnpGaufretteBundle Configuration
knp_gaufrette:
stream_wrapper: ~
adapters:
user_identity_adapter:
aws_s3:
service_id: 'app.manager.amazon_s3'
bucket_name: '%aws_bucket_name%'
detect_content_type: true
options:
create: true
directory: uploads/users
campaign_image_adapter:
aws_s3:
service_id: 'app.manager.amazon_s3'
bucket_name: '%aws_bucket_name%'
detect_content_type: true
options:
create: true
directory: uploads/campaigns
filesystems:
user_identity_fs:
adapter: user_identity_adapter
campaign_image_fs:
adapter: campaign_image_adapter
And here is my app/config/services.yml file:
app.manager.amazon_s3:
class: Aws\S3\S3Client
factory_class: Aws\S3\S3Client
factory_method: 'factory'
arguments:
-
version: "2006-03-01"
region: "%aws_bucket_region%"
credentials: { "key": "%aws_bucket_key%", "secret": "%aws_bucket_secret%" }
app.imagine.cache.resolver.amazon_s3:
class: Liip\ImagineBundle\Imagine\Cache\Resolver\AwsS3Resolver
arguments:
- "#app.manager.amazon_s3"
- "%aws_bucket_name%"
- "public-read" # Aws\S3\Enum\CannedAcl::PUBLIC_READ (default)
- { Scheme: https }
- { CacheControl: "max-age=86400" }
calls:
- [ setGetOption, [ Scheme, https ] ]
- [ setPutOption, [ CacheControl, "max-age=86400" ] ]
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3"}
Any reasons for why I can't get it working?

Symfony Application (OroCommerce) appears to be using file cache after configuring SncRedis

I am new to Symfony and I am jumping into the deep end with OroCommerce. I thought I had successfully setup SncRedis (solely based on the fact that the app quit throwing errors at me). However, now that the app is completely setup and installed, I can see that file-based cache is still being generated.
I have a config.yml in place as well as a config_prod.yml but it seems that config_prod.yml only extends the config.yml so I don't think there are any conflicts in config_prod.yml.
# config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
framework:
#esi: ~
translator: { fallback: en }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: "%kernel.debug%"
form: true
csrf_protection: true
validation: { enable_annotations: true }
templating:
engines: ['twig', 'php']
assets_version: %assets_version%
assets_version_format: %%s?version=%%s
default_locale: "%locale%"
trusted_proxies: ~
session: ~
fragments:
enabled: true
path: /_fragment # used for controller action in template
serializer:
enabled: true
annotations:
cache: oro.cache.annotations
# Twig Configuration
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
exception_controller: "FOS\RestBundle\Controller\ExceptionController::showAction"
globals:
bap:
layout: ::base.html.twig # default layout across all Oro bundles
# Assetic Configuration
assetic:
debug: false
use_controller: false
filters:
cssrewrite: ~
lessphp:
file: %kernel.root_dir%/../vendor/leafo/lessphp/lessc.inc.php
apply_to: "\.less$"
paths: ["%kernel.root_dir%/../web/bundles"]
cssmin:
file: %kernel.root_dir%/Resources/php/cssmin-v3.0.1.php
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
port: "%mailer_port%"
encryption: "%mailer_encryption%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
fos_rest:
body_listener:
decoders:
json: fos_rest.decoder.json
view:
failed_validation: HTTP_BAD_REQUEST
default_engine: php
formats:
json: true
xml: false
format_listener:
rules:
- { path: '^/api/rest', priorities: [ json ], fallback_format: json, prefer_extension: false }
- { path: '^/api/soap', stop: true }
- { path: '^/', stop: true }
routing_loader:
default_format: json
fos_js_routing:
routes_to_expose: [oro_*]
oro_frontend:
routes_to_expose: [oro_*]
stof_doctrine_extensions:
default_locale: en
translation_fallback: true
orm:
default:
translatable: true
tree: true
services:
twig.extension.intl:
class: Twig_Extensions_Extension_Intl
tags:
- { name: twig.extension }
oro.cache.abstract:
abstract: true
class: Snc\RedisBundle\Doctrine\Cache\RedisCache
calls:
- [setRedis, ["#snc_redis.default"]]
oro.cache.annotations:
public: false
parent: oro.cache.abstract
calls:
- [ setNamespace, [ "oro_annotations_cache" ] ]
escape_wsse_authentication:
authentication_provider_class: Oro\Bundle\UserBundle\Security\WsseAuthProvider
genemu_form:
select2: ~
autocomplete: ~
a2lix_translation_form:
locales: [en, fr]
templating: "OroUIBundle:Form:translatable.html.twig"
lexik_maintenance:
authorized:
path: "maintenance|.*\.js" # "maintenance" is only for demo purposes, remove in production!
# ips: ["127.0.0.1"] # Optional. Authorized ip addresses
driver:
class: Lexik\Bundle\MaintenanceBundle\Drivers\FileDriver
options:
file_path: %kernel.root_dir%/cache/maintenance_lock
#
# ORO Bundles config
#
oro_distribution:
entry_point: ~
oro_require_js:
build_path: "js/oro.min.js"
building_timeout: 3600
build:
preserveLicenseComments: true
oro_help:
defaults:
server: http://help.orocrm.com/
prefix: Third_Party
vendors:
Oro:
prefix: ~
alias: Platform
routes:
oro_default:
uri: Platform/OroDashboardBundle
oro_theme:
active_theme: oro
oro_message_queue:
transport:
default: '%message_queue_transport%'
'%message_queue_transport%': '%message_queue_transport_config%'
client: ~
snc_redis:
clients:
default:
type: predis
alias: default
dsn: redis://redis-session
logging: %kernel.debug%
session:
type: predis
alias: session
dsn: redis://redis-session/4
logging: %kernel.debug%
cache:
type: predis
alias: cache
dsn: redis://redis-session/1
logging: true
profiler_storage:
type: predis
alias: profiler_storage
dsn: redis://redis-session/2
logging: false
session:
client: session
prefix: session
doctrine:
metadata_cache:
client: cache
entity_manager: default
document_manager: default
result_cache:
client: cache
entity_manager: [default, read]
document_manager: [default, slave1, slave2]
namespace: "dcrc:"
query_cache:
client: cache
entity_manager: default
swiftmailer:
client: default
key: swiftmailer
doctrine:
orm:
query_cache_driver: redis
result_cache_driver: redis
jms_serializer:
metadata:
cache: Metadata\Cache\DoctrineCacheAdapter
You can install OroRedisConfigBundle that have snc/redis-bundle in dependency Instead. After that to work with redis you need to add 4 lines in parameters.yml of your application like:
session_handler: 'snc_redis.session.handler'
redis_dsn_session: 'redis://127.0.0.1:6379/0'
redis_dsn_cache: 'redis://127.0.0.1:6380/0'
redis_dsn_doctrine: 'redis://127.0.0.1:6380/1'
Don't forget to clear application cache.
And about cache folder (app/cache/prod for example). For Symfony applications it always be even if you enable redis.

Error You have a requested a non-existent parameter "sonata.admin.configuration.admin_services"

Installed AdminBundle on the documentation. When I try to clear the cache, I get an error
You have a requested a non-existent parameter
"sonata.admin.configuration.admin_services". Configured all the config
files.
I ask for help.
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: en
framework:
#esi: ~
translator: { fallbacks: ['%locale%'] }
secret: '%secret%'
router:
resource: '%kernel.project_dir%/app/config/routing.yml'
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
#serializer: { enable_annotations: true }
templating:
engines: ['twig']
default_locale: '%locale%'
trusted_hosts: ~
session:
# https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
handler_id: session.handler.native_file
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
fragments: ~
http_method_override: true
assets: ~
php_errors:
log: true
# Twig Configuration
twig:
debug: '%kernel.debug%'
strict_variables: '%kernel.debug%'
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
# if using pdo_sqlite as your database driver:
# 1. add the path in parameters.yml
# e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
# 2. Uncomment database_path in parameters.yml.dist
# 3. Uncomment next line:
#path: '%database_path%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
#Cache
doctrine_cache:
providers:
my_markdown_cache:
type: file_system
file_system:
directory: /tmp/doctrine_cache
#sonata_admin:
# title: My Blog Admin
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
routing.yml
app:
resource: '#AppBundle/Controller/'
type: annotation
homepage:
path: /
defaults:
_controller: AppBundle:Main:home
#admin:
# resource: '#SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
# prefix: /admin
#
#_sonata_admin:
# resource: .
# type: sonata_admin
# prefix: /admin
admin_area:
resource: "#SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
prefix: /admin
services.yml
# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
#parameter_name: value
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false
# makes classes in src/AppBundle available to be used as services
# this creates a service per class whose id is the fully-qualified class name
AppBundle\:
resource: '../../src/AppBundle/*'
# you can exclude directories or files
# but if a service is unused, it's removed anyway
exclude: '../../src/AppBundle/{Entity,Repository,Tests}'
# controllers are imported separately to make sure they're public
# and have a tag that allows actions to type-hint services
AppBundle\Controller\:
resource: '../../src/AppBundle/Controller'
public: true
tags: ['controller.service_arguments']
Read the error message ... you forgot to add
sonata.admin.configuration.admin_services
in your parameters.yml

"NetworkError: 404 Not Found - /stylesheet/bootstrap.min.css"

I'm a beginner with Symfony2 but I need to duplicate a website made with this frameworks. When I want to run the site as localhost there is no CSS on the page and errors of loading css appears. Do you know how to fix it ? Actually the files exist in the folder web/bundle/...
My css errors
my config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: admin.yml}
# Put parameters here that don't need to change on each machine where the app is deployed
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
framework:
#esi: ~
translator:
enabled: true
fallbacks: ["%locale%"]
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
#serializer: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
# FOSUserBundle Configuration
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: AppBundle\Entity\User
# Twig Configuration
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
gmaps_api_key: "%gmaps_api_key%"
# Assetic Configuration
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: ['AppBundle']
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: "%kernel.root_dir%/Resources/java/compiler.jar"
#yui_css:
# jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
# if using pdo_sqlite as your database driver:
# 1. add the path in parameters.yml
# e.g. database_path: "%kernel.root_dir%/data/data.db3"
# 2. Uncomment database_path in parameters.yml.dist
# 3. Uncomment next line:
# path: "%database_path%"
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
# FOSRestBundle Configuration
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: 'force'
formats:
xml: true
json : true
templating_formats:
html: true
force_redirects:
html: true
failed_validation: HTTP_BAD_REQUEST
default_engine: twig
exception_wrapper_handler: null
routing_loader:
default_format: json
service:
exception_handler: fos_rest.view.exception_wrapper_handler
run app/console assets:install && app/console assetic:dump command
assetic:dump can be not found, it depend the version of symfony

HWIOAuthBundle error non-existent service "session"

I've looked at everywhare but could not find a reference to this:
After configuring the HWIOAuthBundle and get a few problems solved I got the following error:
( ! ) Fatal error: Uncaught exception 'Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException' with message 'The service "hwi_oauth.resource_owner.google" has a dependency on a non-existent service "session".' in E:\Servidor\Wamp\wamp\www\DEVELOPMENT\magnetics\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Compiler\CheckExceptionOnInvalidReferenceBehaviorPass.php on line 64
I'm using Symfony 2.6 and here are my configuration file:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
framework:
#esi: ~
translator: { fallback: %locale% }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: %kernel.debug%
form: ~
csrf_protection: false
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session: false
fragments: ~
hwi_oauth:
# name of the firewall in which this bundle is active, this setting MUST be set
firewall_name: secured_area
resource_owners:
google:
type: google
client_id: "977681365085-3pb"
client_secret: "0IvhJ-DL7"
scope: "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
#options:
#access_type: offline
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
exception_controller: 'FOS\RestBundle\Controller\ExceptionController::showAction'
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
bundles: [ MagneticsAdminBundle ]
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: %kernel.root_dir%/Resources/java/compiler.jar
#yui_css:
# jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
spool: { type: memory }
sensio_framework_extra:
view: { annotations: false }
fos_rest:
disable_csrf_role: ROLE_API
param_fetcher_listener: true
view:
mime_types:
json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1']
view_response_listener: 'force'
formats:
xml: true
json: true
templating_formats:
html: true
format_listener:
rules:
- { path: ^/, priorities: [ html, json, xml ], fallback_format: ~, prefer_extension: true }
media_type:
version_regex: '/(v|version)=(?P<version>[0-9\.]+)/'
exception:
codes:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
messages:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
allowed_methods_listener: true
access_denied_listener:
json: true
body_listener: true
fos_http_cache:
cache_control:
rules:
# the controls section values are used in a call to Response::setCache();
-
match:
path: ^/notes
methods: [GET, HEAD]
headers:
cache_control: { public: true, max_age: 15, s_maxage: 30 }
last_modified: "-1 hour"
vary: [Accept-Encoding, Accept-Language]
I've found similar problems but none of the solutions worked for me, anyone has an idea?
You have sessions disabled in your config
session: false
I don't know this for sure, but I'm going to guess that the session service isn't created when sessions are disabled at the framework level.
You can check by debugging the container
$ php app/console container:debug
Or more targeted
$ php app/console container:debug session

Resources