2016-03-28 24 views
5

Sto provando a spostare symfony su host condiviso.Symfony Cache doctrine/orm/Proxies non è riuscito ad aprire stream /Proxy/AbstractProxyFactory.php sulla riga 209

Ho spostato la struttura di symfony in/e la mia cartella web è/public_html.

Warning: require(/home/user/app/cache/prod/doctrine/orm/Proxies/__CG__UserBundleEntityUser.php): failed to open stream: No such file or directory in /home/user/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 209

Warning: require(/home/user/app/cache/prod/doctrine/orm/Proxies/__CG__UserBundleEntityUser.php): failed to open stream: No such file or directory in /home/user/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 209

Fatal error: require(): Failed opening required '/home/user/app/cache/prod/doctrine/orm/Proxies/__CG__UserBundleEntityUser.php' (include_path='.:/opt/php55/lib/php') in /home/user/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 209

Questo errore si verifica solo nell'ambiente prod. L'eccezione non viene generata nell'ambiente dev.

ho provato la seguente:

rm -rf /app/cache + chmod 777 
app/console cache:warmup 

I use Symfony 2.8.3. Le seguenti directory sono presenti a livello locale e sul server:

cache locale: -/annotazioni,/ramoscello,/vich_uploader +/dottrina,/traduzioni

cache server: -/annotazioni,/ramoscello,/vich_uploader

Se carico la cache locale sul server, l'eccezione scompare.

+0

sei scappato '/ cache di console app: warmup --env = prod'? Questo comando ha generato le cache proxy in realtà ... – nifr

+0

sì, corro. Questo errore non restituisce, generare il riscaldamento del messaggio di ritorno. Ma la cartella dottrina è mission in app/cache/prod. – Luiz

+0

Ho fornito una risposta che risolverà il problema. Abilita la generazione automatica della classe proxy nella configurazione per l'ambiente 'prod'. – nifr

risposta

29

Non hai creato le classi proxy prima di provare ad accedere alla tua applicazione. Questo di solito è fatto da:

app/console cache:warmup --env=prod 

L'auto-generazione di proxy-classi è disabilitata di default nell'ambiente prod. È possibile attivare la generazione automatica di proxy-classi simile all'ambiente dev aggiungendo questo alla propria configurazione:

app/config/config_prod.yml

doctrine: 
    orm: 
     auto_generate_proxy_classes: true # <- change to true 
     proxy_dir:   '%kernel.cache_dir%/doctrine/orm/Proxies' 
     proxy_namespace:  Proxies 
+0

** Questo ha risolto il problema. ** Prima della mia configurazione ho solo questa auto_generate_proxy_classes: "% kernel.debug%". ** Grazie ** – Luiz

+0

C'è un errore di battitura nella prima riga, è 'doctrine:' :) – Gravis

+0

"L'auto-generazione di classi proxy è disabilitata di default nell'ambiente prod" perché? dovrei lasciarlo abilitato per sempre o disabilitato di nuovo? – Kakashi