/** * Creates Fluid's temporary directory - or at least asserts that it exists and is * writable. * * @param string $temporaryDirectoryBase Full path to the base for the temporary directory * @return string The full path to the temporary directory * @throws \TYPO3\Fluid\Utility\Exception if the temporary directory could not be created or is not writable */ protected function createTemporaryDirectory($temporaryDirectoryBase) { $temporaryDirectoryBase = \TYPO3\Fluid\Utility\Files::getUnixStylePath($temporaryDirectoryBase); if (substr($temporaryDirectoryBase, -1, 1) !== '/') { $temporaryDirectoryBase .= '/'; } $temporaryDirectory = $temporaryDirectoryBase . str_replace('/', '/SubContext', (string) $this->context) . '/'; if (!is_dir($temporaryDirectory) && !is_link($temporaryDirectory)) { try { \TYPO3\Fluid\Utility\Files::createDirectoryRecursively($temporaryDirectory); } catch (\TYPO3\Flow\Error\Exception $exception) { throw new \TYPO3\Flow\Utility\Exception('The temporary directory "' . $temporaryDirectory . '" could not be created. Please make sure permissions are correct for this path or define another temporary directory in your Settings.yaml with the path "TYPO3.Flow.utility.environment.temporaryDirectoryBase".', 1335382361); } } if (!is_writable($temporaryDirectory)) { throw new \TYPO3\Fluid\Utility\Exception('The temporary directory "' . $temporaryDirectory . '" is not writable. Please make this directory writable or define another temporary directory in your Settings.yaml with the path "TYPO3.Flow.utility.environment.temporaryDirectoryBase".', 1216287176); } return $temporaryDirectory; }
/** * Sets a reference to the cache frontend which uses this backend and * initializes the default cache directory. * * @param \TYPO3\Fluid\Cache\Frontend\FrontendInterface $cache The cache frontend * @return void * @throws \TYPO3\Fluid\Cache\Exception */ public function setCache(FrontendInterface $cache) { parent::setCache($cache); $codeOrData = $cache instanceof PhpFrontend ? 'Code' : 'Data'; $cacheDirectory = $this->environment->getPathToTemporaryDirectory() . 'Cache/' . $codeOrData . '/' . $this->cacheIdentifier . '/'; if (!is_writable($cacheDirectory)) { try { \TYPO3\Fluid\Utility\Files::createDirectoryRecursively($cacheDirectory); } catch (\TYPO3\Fluid\Utility\Exception $exception) { throw new \TYPO3\Fluid\Cache\Exception('The cache directory "' . $cacheDirectory . '" could not be created.', 1264426237); } } if (!is_dir($cacheDirectory) && !is_link($cacheDirectory)) { throw new \TYPO3\Fluid\Cache\Exception('The cache directory "' . $cacheDirectory . '" does not exist.', 1203965199); } if (!is_writable($cacheDirectory)) { throw new \TYPO3\Fluid\Cache\Exception('The cache directory "' . $cacheDirectory . '" is not writable.', 1203965200); } $this->cacheDirectory = $cacheDirectory; $this->cacheEntryFileExtension = $cache instanceof PhpFrontend ? '.php' : ''; if (strlen($this->cacheDirectory) + 23 > $this->environment->getMaximumPathLength()) { throw new \TYPO3\Fluid\Cache\Exception('The length of the temporary cache path "' . $this->cacheDirectory . '" exceeds the maximum path length of ' . ($this->environment->getMaximumPathLength() - 23) . '. Please consider setting the temporaryDirectoryBase option to a shorter path. ', 1248710426); } }