2016-12-10 2 views
0

Kurioserweise tritt der Fehler nur in der Produktionsumgebung auf. Der Fehler in Apache error_log:Fehler von Memcached in Symfony 2.8 Produktionsumgebung

[Sat Dec 10 18:35:44.122028 2016] [proxy_fcgi:error] [pid 7916] [client 81.202.203.209:47076] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught exception 'Symfony\\Component\\DependencyInjection\\Exception\\ServiceNotFoundException' with message 'The service "doctrine.orm.default_entity_manager" has a dependency on a non-existent service "doctrine.cache.memcached".' in /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php:58\nStack trace:\n#0 /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php(51): Symfony\\Component\\DependencyInjection\\Compiler\\CheckExceptionOnInvalidReferenceBehaviorPass->processReferences(Array)\n#1 /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php(51): Symfony\\Component\\DependencyInjection\\Compiler\\CheckExceptionOnInvalidReferenceBehaviorPass->processReferences(...\n', referer: xxxx 

Die Konfigurationsdaten von memcached

services.yml:

parameters: 
# parameter_name: value 

services: 
# service_name: 
#  class: AppBundle\Directory\ClassName 
#  arguments: ["@another_service_name", "plain_value", "%parameter_name%"] 

    kernel.listener.command_dispatch: 
     class: LoteriaBundle\EventListener\ConsoleExceptionListener 
     arguments: ['@logger'] 
     tags: 
      - { name: kernel.event_listener, event: console.exception } 

    memcached: 
     class: Memcached 
     calls: 
      - [ addServers, [%memcache_hosts%] ] 

    doctrine.cache.memcached: 
     class: Doctrine\Common\Cache\MemcachedCache 
     calls: 
      - [ setMemcached, [ @memcached ] ] 

config_prod.yml:

imports: 
    - { resource: config.yml } 

doctrine: 
    orm: 
     entity_managers: 
      default: 
       metadata_cache_driver: 
        type: service 
        id: doctrine.cache.memcached 
       query_cache_driver: 
        type: service 
        id: doctrine.cache.memcached 
       result_cache_driver: 
        type: service 
        id: doctrine.cache.memcached  

monolog: 
    handlers: 
     main: 
      type:   fingers_crossed 
      action_level: error 
      handler:  nested 
     nested: 
      type: stream 
      path: "%kernel.logs_dir%/%kernel.environment%.log" 
      level: debug 
     console: 
      type: console 

parameters.yml

memcache_hosts: 
    - 
     dsn: 127.0.0.1 
     port: 11211 

Código de mi config.yml

imports: 
- { resource: parameters.yml } 
- { resource: security.yml } 
- { resource: services.yml } 
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'] 
    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 


twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 
    globals: 
    global: 
     url_logo: '/' 
     url_buscador: '' 
assetic: 
    debug:   '%kernel.debug%' 
    use_controller: '%kernel.debug%' 
    filters: 
    cssrewrite: ~ 

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: 
    transport: "%mailer_transport%" 
    host:  "%mailer_host%" 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    port: "%mailer_port%" 
    encryption: "%mailer_enc%" 
    auth_mode: "%mailer_auth_mode%" 
    # spool:  { type: memory } 

ich fügen Sie den config.yml wie es in späteren Kommentare

+0

können Sie den Inhalt der 'config_prod.yml' Datei (alles) posten? – Federkun

+0

hat die Datei services.yml den 'services:' Schlüssel? oder ist es nur in dem oben genannten Code weggelassen? zeigt die 'php app/console debug: container doctrin.cache.memcached' die Existenz des Dienstes in der dev env an? – Vamsi

+0

Die Datei services.yml ist jetzt das vollständige Original. Und ja, Ausführen dieses Befehls zeigt die Existenz des Dienstes in der Entwicklungsumgebung – kusflo

Antwort

0

Dies ist die Konfiguration, die für mich in der Produktionsumgebung gearbeitet angefordert wird:

Parameter .yml

parameters: 
    .... 
    memcache_hosts: 
    - 
     dsn: 127.0.0.1 
     port: 11211 

config.yml

.... 

doctrine: 
dbal: 
    driver: pdo_mysql 
    host:  "%database_host%" 
    port:  "%database_port%" 
    dbname: "%database_name%" 
    user:  "%database_user%" 
    password: "%database_password%" 
    charset: UTF8 

orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 
    entity_managers: 
     default: 
      naming_strategy: doctrine.orm.naming_strategy.underscore 
      auto_mapping: true 
      metadata_cache_driver: 
       type: service 
       id: doctrine.cache.memcached 
      query_cache_driver: 
       type: service 
       id: doctrine.cache.memcached 
      result_cache_driver: 
       type: service 
       id: doctrine.cache.memcached 

services.yml

.... 

    services: 
    kernel.listener.command_dispatch: 
     class: LoteriaBundle\EventListener\ConsoleExceptionListener 
     arguments: ['@logger'] 
     tags: 
     - { name: kernel.event_listener, event: console.exception } 

    memcached: 
     class: Memcached 
     calls: 
     - [ addServers, [%memcache_hosts%] ] 

    doctrine.cache.memcached: 
     class: Doctrine\Common\Cache\MemcachedCache 
     calls: 
     - [ setMemcached, [ @memcached ] ]