[FrameworkBundle] prevent cache:clear creating too long paths
This commit is contained in:
parent
8ab107c905
commit
6e279c5f8a
@ -54,7 +54,9 @@ EOF
|
|||||||
protected function execute(InputInterface $input, OutputInterface $output)
|
protected function execute(InputInterface $input, OutputInterface $output)
|
||||||
{
|
{
|
||||||
$realCacheDir = $this->getContainer()->getParameter('kernel.cache_dir');
|
$realCacheDir = $this->getContainer()->getParameter('kernel.cache_dir');
|
||||||
$oldCacheDir = $realCacheDir.'_old';
|
// the old cache dir name must not be longer than the real one to avoid exceeding
|
||||||
|
// the maximum length of a directory or file path within it (esp. Windows MAX_PATH)
|
||||||
|
$oldCacheDir = substr($realCacheDir, 0, -1).('~' === substr($realCacheDir, -1) ? '+' : '~');
|
||||||
$filesystem = $this->getContainer()->get('filesystem');
|
$filesystem = $this->getContainer()->get('filesystem');
|
||||||
|
|
||||||
if (!is_writable($realCacheDir)) {
|
if (!is_writable($realCacheDir)) {
|
||||||
@ -75,7 +77,7 @@ EOF
|
|||||||
// the warmup cache dir name must have the same length than the real one
|
// the warmup cache dir name must have the same length than the real one
|
||||||
// to avoid the many problems in serialized resources files
|
// to avoid the many problems in serialized resources files
|
||||||
$realCacheDir = realpath($realCacheDir);
|
$realCacheDir = realpath($realCacheDir);
|
||||||
$warmupDir = substr($realCacheDir, 0, -1).'_';
|
$warmupDir = substr($realCacheDir, 0, -1).('_' === substr($realCacheDir, -1) ? '-' : '_');
|
||||||
|
|
||||||
if ($filesystem->exists($warmupDir)) {
|
if ($filesystem->exists($warmupDir)) {
|
||||||
$filesystem->remove($warmupDir);
|
$filesystem->remove($warmupDir);
|
||||||
@ -100,8 +102,6 @@ EOF
|
|||||||
*/
|
*/
|
||||||
protected function warmup($warmupDir, $realCacheDir, $enableOptionalWarmers = true)
|
protected function warmup($warmupDir, $realCacheDir, $enableOptionalWarmers = true)
|
||||||
{
|
{
|
||||||
$this->getContainer()->get('filesystem')->remove($warmupDir);
|
|
||||||
|
|
||||||
// create a temporary kernel
|
// create a temporary kernel
|
||||||
$realKernel = $this->getContainer()->get('kernel');
|
$realKernel = $this->getContainer()->get('kernel');
|
||||||
$realKernelClass = get_class($realKernel);
|
$realKernelClass = get_class($realKernel);
|
||||||
|
Reference in New Issue
Block a user