Symfony2要求其缓存对于运行它的进程是可写的,即使在生产环境中也是如此。然而,恶意改变高速缓存可能导致任意代码执行和/或对应用程序的任意改变(且其意外损坏可能导致软件故障)。
当然,在操作系统中执行限制以防止任何面向公众的系统的危害升级到如此武断的程度,这无疑是一种良好的实践。
一种想法是部署一个热的但只读的可执行代码缓存(通常是静态的),这样生产系统之后就不能修改它;动态数据,例如来自Doctrine的数据,仍然可以缓存在可写的地方-但它永远不会被评估为代码执行。
这是受支持的配置吗?如果是这样的话,是怎么做的?还是我太偏执了?
发布于 2019-07-16 01:56:27
我认为Symfony还不支持这一点,因为GitHub上仍然有一个开放的项目来解决这个问题:
发布于 2017-06-09 03:01:44
我也在做这件事。这在Symfony 3.3中变得更加可行,因为文件缓存最终支持相对文件路径和动态环境变量(在容器中)。
尝试以下方法,看看它是否适合您:
# locally
$ app/console cache:clear --no-debug --env=dev
$ app/console cache:warmup --no-debug --env=dev
# for production
$ app/console cache:clear --no-debug --env=prod
$ app/console cache:warmup --no-debug --env=prodhttps://stackoverflow.com/questions/32061272
复制相似问题