2016-07-04 13 views
2

Ich versuche, Symfony 3.0 Memcached-Sitzung anstelle von Standard zu verwenden.Memcached Sitzung Symfony 3.0 gibt Fehler 500

konfiguriert ich meine config.yml wie folgt aus:

imports: 
    - { resource: params.php } 
    - { resource: security.yml } 
    - { resource: services.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 
parameters: 
    locale: en 

framework: 
    #esi:    ~ 
    #translator:  { 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: 
     # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id 
     handler_id: session.handler.memcached 
     session_memcached_host:  127.0.0.1 
     session_memcached_port:  11211 
     session_memcached_prefix: ng_ 
     session_memcached_expire: 43200 
    fragments:  ~ 
    http_method_override: true 
    assets: ~ 

# Twig Configuration 
twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# 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: 
     # 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%" 
    encryption: "%mailer_encryption_method%" 
    port: "%mailer_port%" 
    spool:  { type: memory } 

Und Ich habe das services.yml wie folgt aus:

services: 
    session.memcached: 
     class: Memcached 
     arguments: 
      persistent_id: %session_memcached_prefix% 
     calls: 
      - [ addServer, [ %session_memcached_host%, %session_memcached_port% ]] 

    session.handler.memcached: 
     class:  Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler 
     arguments: ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% } 

Aber im Netzwerk ich Fehler 500. Der Grund ist, weil ich diese Zeile ist falsch formatiert:

arguments: ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% } 

Wie ich gebe correcttrly die Einstellung für memcached-Sitzung auf Symfony 3?

EDIT 1:

Mein error.log sagt:

[Mon Jul 04 21:49:13.122413 2016] [:error] [pid 4244] [client 127.0.0.1:50098] PHP Fatal error: Uncaught Symfony\Component\Yaml\Exception\ParseException: Malformed inline YAML string ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% } at line 18 (near "arguments: ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% }") in /home/pcmagas/Kwdikas/web/apps/symphotest/vendor/symfony/symfony/src/Symfony/Component/Yaml/Inline.php:338\nStack trace:\n#0 /home/pcmagas/Kwdikas/web/apps/symphotest/vendor/symfony/symfony/src/Symfony/Component/Yaml/Inline.php(63): Symfony\Component\Yaml\Inline::parseSequence('["@session.memc...', 101, Array)\n#1 /home/pcmagas/Kwdikas/web/apps/symphotest/vendor/symfony/symfony/src/Symfony/Component/Yaml/Parser.php(498): Symfony\Component\Yaml\Inline::parse('["@session.memc...', false, false, false, Array)\n#2 /home/pcmagas/Kwdikas/web/apps/symphotest/vendor/symfony/symfony/src/Symfony/Component/Yaml/Parser.php(231): Symfony\Component\Yaml\Parser->parseValue('["@session.memc...', false, false, in /home/pcmagas/Kwdikas/web/apps/symphotest/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/FileLoader.php on line 118

Edit 2:

Auch gibt es eine neue config.yml nach ein paar Kommentare in coomments vorgeschlagen.

imports: 
    - { resource: params.php } 
    - { resource: security.yml } 
    - { resource: services.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 
parameters: 
    locale: en 
    session_memcached_host:  127.0.0.1 
    session_memcached_port:  11211 
    session_memcached_prefix: ng_ 
    session_memcached_expire: 43200 

framework: 
    #esi:    ~ 
    #translator:  { 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: 
     # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id 
     handler_id: session.handler.memcached 
    fragments:  ~ 
    http_method_override: true 
    assets: ~ 

# Twig Configuration 
twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# 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: 
     # 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%" 
    encryption: "%mailer_encryption_method%" 
    port: "%mailer_port%" 
    spool:  { type: memory } 
+0

Bitte senden Sie den vollständigen Fehler angezeigt. BTW in der config.yml die Schlüssel unter der Sitzung mit dem Namen 'session_memcached_ *' sind Parameter, also legen Sie es unter dem 'Parameter' Schlüssel in der config.yml – Matteo

Antwort

0

Am Ende der Zeile, das das Problem verursacht sein soll:

arguments: ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% }] 

(Die] am Ende des Eintrags fehlte)