Symfony 2.8: How do I completely turn off caching? - symfony

so we were load testing our server (thus my Symfony page last Friday) and it somehow filled up the app/cache folder.
I've some various discussions on the topic and I modified my config/file
config.yml
twig:
cache: false
app_dev.php (commented out the line below)
//$kernel->loadClassCache();
Is there a way to completely turn off caching? The only workaround I can think of at the moment is to run:
php app/console cache:clear
via cron.
Thanks

Related

What are the files that are cached by default in Symfony

The below command clears the Symfony cache.
php bin/console cache:clear
My question is what are the files that Symfony caches out of the box.
UPDATED:
I am aware of the default location var/cache where the files are stored. I am looking for a more precise answer.

Symfony 2 cache stuck after config change (FileLoaderException)

Very strange behavior in Sf2 here. I've try to change my config namespaces while i was refactoring code:
adadgio_rocket:
foo: 'bar'
to something simple
adadgio:
rocket: 'bar'
I have change my bundle DI Configuration nodes to reflect that change :
$rootNode = $treeBuilder->root('adadgio');
$rootNode->children()
->scalarNode('rocket')->end()
->end();
Now i have a FileLoaderLoadException still saying able to load the configuration for adadgio but still finds the adadgio_rocket namespace (error results).
I tried to clear the cache thinking this was the issue, but of course, the symphony cache command issues the same error. And its still finds other config namespaces that were removes (and their declaration in the AppKernel as well).
Basically, everything is stuck now.
Yes, that sort of stuff can happen. Simply delete the app/cache/dev directory and run app/console cache:clear again.
If it still doesn’t work, make 100% sure that there are no remainders in the config or referenced in other bundles. If unsure, check:
grep -ir adadgio app/config/ src/ vendor/
It can be a issue of permission also. Give 777 permission to cache and use following to clear cache without warming up the cache:
app/console cache:clear --env=<your environment> --no-warmup

Symfony2 - confused cache clear trying to write to pro_

My Symfony installation seems to have gotten confused somewhere (probably during a failed cache clear). It seems to think that the production cache folder should be called pro_ instead of prod.
First, when I tried to run $ php console cache:clear --env=prod I got the error message:
[Symfony\Component\Filesystem\Exception\IOException]
Cannot rename "...cache/pro_" to "...cache/pro_".
I'm running on a windows dev machine (so there are no file system permissions issues).
So, I tried deleting all of the cache/* files/folders manually and trying again. This time the cache:clear went through and produced a single prod folder. That folder has subfolders for annotations, assetic, doctrine, sessions and twig.
But when I open the prod front controller (e.g. http://devsite/ in a browser) it fails with the message:
Fatal error: require() [function.require]:
Failed opening required '...cache/pro_/doctrine/orm/Proxies\__CG__AcmeDemoBundleEntityFoo.php'
(include_path='blah, blah, blah')
in ...\vendor\doctrine\common\lib\Doctrine\Common\Proxy\AbstractProxyFactory.php on line 165
From the looks of this it's trying to access cache files in pro_ instead of prod (again).
Looking in the cache folder I can see that __CG__AcmeDemoBundleEntityFoo.php exists under cache\prod but there is now a pro_ folder with annotations and sessions sub-folders.
What's going on and how do I make Symfony forget about pro_ so it can go back to using prod for everything?
I thought everything to do with the cache was stored under the cache folder... is there something else (somewhere) that's storing some reference to pro_? Or am I looking in the wrong place for the solution to this problem?
Edit: Done some more searching and appProdProjectContainer.php contains 16 references to .../cache/pro_. If I manually search and replace these to .../cache/prod the site works. But the next time I run console cache:clear it resets them back to pro_. Where could this errant behaviour be coming from?
Edit2: OK, I got to the bottom of this and have submitted a PR to the Symfony core to try and fix it. The problem was caused by our cache path containing '\' characters which were then escaped in the cache files and failing to match a search/replace command which was meant to clean them up.
app/console cache:clear --env=prod --no-warmup
composer dump-autoload -o
app/console cache:warmup --env=prod
This was a bug in Symfony's handling of cache paths with back-slashes in them.
The short term workaround is to replace them with forward slashes.
Longer term there is a fix posted as https://github.com/symfony/symfony/pull/9184 which will be brought into the core code soon.

Symfony 2.0 assetic dump produces wrong names in debug mode

I'm compressing my javascripts via assetic (block in twig for all scripts in one dir) which works fine in prod mode. Now i want to use the debug mode for my prod env, so i switch assetic to debug in the config, clear the cache and dump the assets with debug on.
This works for some javascripts but not all. Symfony adds a suffix number to them which is higher (by one) on the website (javascript tag) in opposite to the real file. Sometimes clearing the cache and dumping again solved the problem, but noot this time.
For example:
It dumps: /web/js/main_part_3_jquery-ui_6.js
But uses: /web/js/main_part_3_jquery-ui_1.js
So how can i solve this?
Edit:
The wron suffix doesn't appear on the first request to the site after cleaning the cache.
Since app/console assetic:dump is sensible for cached yml files - you should clear the cache for dumping assets each time you change configuration.
Best of all is to do it in this sequence:
rm -rf app/cache/*
app/console assets:install web
app/console assetic:dump
Of course, with debug keys, needed environments and so on
I had a similar problem of multiple generated assets and symfony not including the good one on display.
It was because of busting cache enabled in my case, and it was apparently misconfigured. (apparently it's usefull when you need a new version of your files, for example when you update your .js in dev but don't want to break prod )
So disabling it in config.yml fixed it.
assetic:
workers:
cache_busting:
enabled: false

Assetic - Route "_assetic_001d5b7_0" does not exist

This question seems to have been asked multiple times but none of the solutions work for me.
I'm in my prod environment, here is what I've done:
cleared cache before/after doing anything
attempted commenting out the _assetic stuff in config_dev and ensure it isn't anywhere else (not that this should matter in prod env)
set use_controller to both true and false (obviously works with true but doesn't use the compiled files)
Is there anything else I'm missing? The files are generating completely fine from
php app/console assetic:dump --env=prod --no-debug
the file name matches that of in the error minus the route stuff.
I had this problem just one minute ago. Clean up the cache worked for me:
app/console cache:clear --env=prod
Hope this helps.
If clearing the cache or dumping the assets doesn't work. Try noisebleed's comment:
// app/config_dev.yml
assetic:
use_controller: true
bundles: ['FooBarBundle']
Maybe you have removed the assetic routing from the app/routing_dev.yml
_assetic:
resource: .
type: assetic
Faced with the same issue but reason was I name template as "something.twig", not "something.html.twig".
Its seems assetic not scan templates without .html in extension.
As result - template work, but assetic not perform dumping/adding routes for assets from it. Adding .html solve the problem.
Updating the config.yml with a dumb character (newline, white space) remove that error. It seems that by doing that, we force the cache do be re-generated. (Symfony 3.0.0)
maybe is too late but... what worked for me:
php composer.phar install
php app/console cache:clear
php app/console cache:warmup
Like #Marcus said, if you tried:
php bin/console cache:clear
and it didn't help, please clear the your_project_root/var/cache folder manually (remove all folders and files). If you use unix/linux systems, and receive a system message like "Error removing file: Permission denied", you need to change accesses to dir first, for example you can use console command
sudo chmod -R 0777 /your_site_directory/var/cache/
and after this you can clear cache dir.
I encountered this issue in Symfony 3.3 after trying to override my Twig templates directory. Not sure how to fix the issue, but reverting to default templates directory config resolved the issue for now.
# config.yml
twig:
paths: ["%kernel.project_dir%/templates"] # Remove this line to use default dir
After trying all the suggested solutions here, to me it was simply the issue with the name of the template. I had .twig but not .html.twig extension, that's all.

Resources