2016-07-04 5 views
2

기본 symfony 세션 대신 Memcached 세션을 사용하려고합니다. Memcached 세션 Symfony 3.0 반환 오류 500

내가 이렇게 내 config.yml 구성 :

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 } 

그리고 그 같은 services.yml 편집 :

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% } 

을하지만 네트워크에 나는 오류 (500)가 이유가 있기 때문이다 얻을 나는이 라인이 잘못되었습니다 :

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

것은 내가 correcttrly 심포니에 memcached를 세션에 대한 설정을 줄 것이다 방법 삼?

편집 1 :

내하는 error.log는 말한다 :

[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

편집 2 :

또한 coomments에 제시된 몇 가지 코멘트를 한 후 새로운 config.yml있다. 결국

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

표시된 전체 오류를 게시하시기 바랍니다. BTW config.yml에서'session_memcached_ *'라는 이름의 세션 키는 매개 변수이므로 config.yml의'parameters' 키 아래에 넣으십시오 – Matteo

답변

0

문제가해야됩니다 라인 :

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

(항목의 끝에]가 실종됐다)