diff --git a/phpBB/install/startup.php b/phpBB/install/startup.php index 0aaa9a648f..0180996a19 100644 --- a/phpBB/install/startup.php +++ b/phpBB/install/startup.php @@ -161,7 +161,7 @@ function installer_shutdown_function($display_errors) $cache = new \phpbb\cache\driver\file(__DIR__ . '/../cache/installer'); $filesystem = new \phpbb\filesystem\filesystem(); - if (strpos($error['file'], $filesystem->realpath($cache->cache_dir)) !== false) + if (strpos($error['file'], $filesystem->realpath($cache->cache_dir)) !== false && is_writable($cache->cache_dir)) { $file_age = @filemtime($error['file']); diff --git a/phpBB/phpbb/cache/driver/file.php b/phpBB/phpbb/cache/driver/file.php index 36150d0589..4190f65342 100644 --- a/phpBB/phpbb/cache/driver/file.php +++ b/phpBB/phpbb/cache/driver/file.php @@ -37,9 +37,9 @@ class file extends \phpbb\cache\driver\base $this->cache_dir = !is_null($cache_dir) ? $cache_dir : $phpbb_container->getParameter('core.cache_dir'); $this->filesystem = new \phpbb\filesystem\filesystem(); - if (!is_dir($this->cache_dir)) + if ($this->filesystem->is_writable($this->cache_dir . '/../') && !is_dir($this->cache_dir)) { - @mkdir($this->cache_dir, 0777, true); + mkdir($this->cache_dir, 0777, true); } } diff --git a/phpBB/phpbb/filesystem/filesystem.php b/phpBB/phpbb/filesystem/filesystem.php index fc7cbdf27d..3e60a6f2fb 100644 --- a/phpBB/phpbb/filesystem/filesystem.php +++ b/phpBB/phpbb/filesystem/filesystem.php @@ -398,13 +398,13 @@ class filesystem implements filesystem_interface $file_gid = @filegroup($file); // Change owner - if ($file_uid !== $this->chmod_info['common_owner']) + if (is_writable($file) && $file_uid !== $this->chmod_info['common_owner']) { $this->chown($file, $this->chmod_info['common_owner'], $recursive); } // Change group - if ($file_gid !== $this->chmod_info['common_group']) + if (is_writable($file) && $file_gid !== $this->chmod_info['common_group']) { $this->chgrp($file, $this->chmod_info['common_group'], $recursive); }