Skip to content

Commit 73e342f

Browse files
committed
Merge remote-tracking branch 'ogresCE/MAGETWO-44552-Readiness-Check-Recursive' into PR_Branch
2 parents 8769eff + 1fca902 commit 73e342f

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

setup/src/Magento/Setup/Model/FilePermissions.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace Magento\Setup\Model;
88

99
use Magento\Framework\App\Filesystem\DirectoryList;
10+
use Magento\Framework\Backup\Filesystem\Iterator\Filter;
1011
use Magento\Framework\Filesystem;
1112

1213
class FilePermissions
@@ -118,25 +119,32 @@ public function getInstallationCurrentWritableDirectories()
118119
}
119120

120121
/**
121-
* Check all sub-directories
122+
* Check all sub-directories and files except for var/generation and var/di
122123
*
123124
* @param string $directory
124125
* @return bool
125126
*/
126127
private function checkRecursiveDirectories($directory)
127128
{
128-
$skipDirs = ['..', '.'];
129129
$directoryIterator = new \RecursiveIteratorIterator(
130-
new \RecursiveDirectoryIterator($directory),
131-
\RecursiveIteratorIterator::LEAVES_ONLY | \RecursiveIteratorIterator::CATCH_GET_CHILD
130+
new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS),
131+
\RecursiveIteratorIterator::CHILD_FIRST
132132
);
133-
foreach ($directoryIterator as $subDirectory) {
134-
if (in_array($subDirectory->getFilename(), $skipDirs)) {
135-
continue;
136-
}
137-
if ($subDirectory->isDir() && !$subDirectory->isWritable()) {
138-
return false;
133+
$noWritableFilesFolders = [
134+
$this->directoryList->getPath(DirectoryList::GENERATION) . '/',
135+
$this->directoryList->getPath(DirectoryList::DI) .'/'
136+
];
137+
138+
$directoryIterator = new Filter($directoryIterator, $noWritableFilesFolders);
139+
140+
try {
141+
foreach ($directoryIterator as $subDirectory) {
142+
if (!$subDirectory->isWritable()) {
143+
return false;
144+
}
139145
}
146+
} catch (\UnexpectedValueException $e) {
147+
return false;
140148
}
141149
return true;
142150
}

0 commit comments

Comments
 (0)