Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
FilePermissions Class Reference

Public Member Functions

 __construct (Filesystem $filesystem, DirectoryList $directoryList, State $state=null)
 
 getInstallationWritableDirectories ()
 
 getApplicationNonWritableDirectories ()
 
 getInstallationCurrentWritableDirectories ()
 
 getApplicationCurrentNonWritableDirectories ()
 
 getMissingWritablePathsForInstallation ($associative=false)
 
 getMissingWritableDirectoriesForDbUpgrade ()
 
 getMissingWritableDirectoriesForInstallation ()
 
 getUnnecessaryWritableDirectoriesForApplication ()
 

Protected Member Functions

 isWritable ($code)
 
 isNonWritable ($code)
 
 isReadableDirectory ($directory)
 

Protected Attributes

 $filesystem
 
 $directoryList
 
 $installationWritableDirectories = []
 
 $applicationNonWritableDirectories = []
 
 $installationCurrentWritableDirectories = []
 
 $applicationCurrentNonWritableDirectories = []
 
 $nonWritablePathsInDirectories = []
 

Detailed Description

Checks permissions to files and folders.

Definition at line 18 of file FilePermissions.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( Filesystem  $filesystem,
DirectoryList  $directoryList,
State  $state = null 
)
Parameters
Filesystem$filesystem
DirectoryList$directoryList
State$state

Definition at line 75 of file FilePermissions.php.

79  {
80  $this->filesystem = $filesystem;
81  $this->directoryList = $directoryList;
82  $this->state = $state ?: ObjectManager::getInstance()->get(State::class);
83  }

Member Function Documentation

◆ getApplicationCurrentNonWritableDirectories()

getApplicationCurrentNonWritableDirectories ( )

Retrieve list of currently non-writable directories for application

Returns
array

Definition at line 197 of file FilePermissions.php.

198  {
199  if (!$this->applicationCurrentNonWritableDirectories) {
200  foreach ($this->applicationNonWritableDirectories as $code => $path) {
201  if ($this->isNonWritable($code)) {
202  $this->applicationCurrentNonWritableDirectories[] = $path;
203  }
204  }
205  }
207  }
$code
Definition: info.phtml:12

◆ getApplicationNonWritableDirectories()

getApplicationNonWritableDirectories ( )

Retrieve list of recommended non-writable directories for application

Returns
array

Definition at line 114 of file FilePermissions.php.

115  {
116  if (!$this->applicationNonWritableDirectories) {
117  $data = [
119  ];
120  foreach ($data as $code) {
121  $this->applicationNonWritableDirectories[$code] = $this->directoryList->getPath($code);
122  }
123  }
124  return array_values($this->applicationNonWritableDirectories);
125  }
$code
Definition: info.phtml:12

◆ getInstallationCurrentWritableDirectories()

getInstallationCurrentWritableDirectories ( )

Retrieve list of currently writable directories for installation

Returns
array

Definition at line 132 of file FilePermissions.php.

133  {
134  if (!$this->installationCurrentWritableDirectories) {
135  foreach ($this->installationWritableDirectories as $code => $path) {
136  if ($this->isWritable($code)) {
137  if ($this->checkRecursiveDirectories($path)) {
138  $this->installationCurrentWritableDirectories[] = $path;
139  }
140  } else {
141  $this->nonWritablePathsInDirectories[$path] = [$path];
142  }
143  }
144  }
146  }
$code
Definition: info.phtml:12

◆ getInstallationWritableDirectories()

getInstallationWritableDirectories ( )

Retrieve list of required writable directories for installation

Returns
array

Definition at line 90 of file FilePermissions.php.

91  {
92  if (!$this->installationWritableDirectories) {
93  $data = [
98  ];
99  if ($this->state->getMode() !== State::MODE_PRODUCTION) {
101  }
102  foreach ($data as $code) {
103  $this->installationWritableDirectories[$code] = $this->directoryList->getPath($code);
104  }
105  }
106  return array_values($this->installationWritableDirectories);
107  }
$code
Definition: info.phtml:12

◆ getMissingWritableDirectoriesForDbUpgrade()

getMissingWritableDirectoriesForDbUpgrade ( )

Checks writable paths for database upgrade, returns array of directory paths that requires write permission

Returns
array List of directories that requires write permission for database upgrade

Definition at line 282 of file FilePermissions.php.

283  {
284  $writableDirectories = [
287  ];
288 
289  $requireWritePermission = [];
290  foreach ($writableDirectories as $code) {
291  if (!$this->isWritable($code)) {
292  $path = $this->directoryList->getPath($code);
293  if (!$this->checkRecursiveDirectories($path)) {
294  $requireWritePermission[] = $path;
295  }
296  }
297  }
298 
299  return $requireWritePermission;
300  }
$code
Definition: info.phtml:12

◆ getMissingWritableDirectoriesForInstallation()

getMissingWritableDirectoriesForInstallation ( )

Checks writable directories for installation

Deprecated:
100.1.0 Use getMissingWritablePathsForInstallation() to get all missing writable paths required for install.
Returns
array

Definition at line 309 of file FilePermissions.php.

310  {
312  $current = $this->getInstallationCurrentWritableDirectories();
313  return array_diff($required, $current);
314  }
$required
Definition: wrapper.phtml:8

◆ getMissingWritablePathsForInstallation()

getMissingWritablePathsForInstallation (   $associative = false)

Checks writable paths for installation, returns associative array if input is true, else returns simple array

Parameters
bool$associative
Returns
array

Definition at line 253 of file FilePermissions.php.

254  {
256  $current = $this->getInstallationCurrentWritableDirectories();
257  $missingPaths = [];
258  foreach (array_diff($required, $current) as $missingPath) {
259  if (isset($this->nonWritablePathsInDirectories[$missingPath])) {
260  if ($associative) {
261  $missingPaths[$missingPath] = $this->nonWritablePathsInDirectories[$missingPath];
262  } else {
263  $missingPaths = array_merge(
264  $missingPaths,
265  $this->nonWritablePathsInDirectories[$missingPath]
266  );
267  }
268  }
269  }
270  if ($associative) {
271  $required = array_flip($required);
272  $missingPaths = array_merge($required, $missingPaths);
273  }
274  return $missingPaths;
275  }
$required
Definition: wrapper.phtml:8

◆ getUnnecessaryWritableDirectoriesForApplication()

getUnnecessaryWritableDirectoriesForApplication ( )

Checks non-writable directories for application

Returns
array

Definition at line 321 of file FilePermissions.php.

322  {
325  return array_diff($required, $current);
326  }
$required
Definition: wrapper.phtml:8

◆ isNonWritable()

isNonWritable (   $code)
protected

Checks if directory is non-writable by given directory code

Parameters
string$code
Returns
bool

Definition at line 227 of file FilePermissions.php.

228  {
229  $directory = $this->filesystem->getDirectoryWrite($code);
230  return $this->isReadableDirectory($directory) && !$directory->isWritable();
231  }
$code
Definition: info.phtml:12

◆ isReadableDirectory()

isReadableDirectory (   $directory)
protected

Checks if directory exists and is readable

Parameters
\Magento\Framework\Filesystem\Directory\WriteInterface$directory
Returns
bool

Definition at line 239 of file FilePermissions.php.

240  {
241  if (!$directory->isExist() || !$directory->isDirectory() || !$directory->isReadable()) {
242  return false;
243  }
244  return true;
245  }

◆ isWritable()

isWritable (   $code)
protected

Checks if directory is writable by given directory code

Parameters
string$code
Returns
bool

Definition at line 215 of file FilePermissions.php.

216  {
217  $directory = $this->filesystem->getDirectoryWrite($code);
218  return $this->isReadableDirectory($directory) && $directory->isWritable();
219  }
$code
Definition: info.phtml:12

Field Documentation

◆ $applicationCurrentNonWritableDirectories

$applicationCurrentNonWritableDirectories = []
protected

Definition at line 61 of file FilePermissions.php.

◆ $applicationNonWritableDirectories

$applicationNonWritableDirectories = []
protected

Definition at line 47 of file FilePermissions.php.

◆ $directoryList

$directoryList
protected

Definition at line 28 of file FilePermissions.php.

◆ $filesystem

$filesystem
protected

Definition at line 23 of file FilePermissions.php.

◆ $installationCurrentWritableDirectories

$installationCurrentWritableDirectories = []
protected

Definition at line 54 of file FilePermissions.php.

◆ $installationWritableDirectories

$installationWritableDirectories = []
protected

Definition at line 40 of file FilePermissions.php.

◆ $nonWritablePathsInDirectories

$nonWritablePathsInDirectories = []
protected

Definition at line 68 of file FilePermissions.php.


The documentation for this class was generated from the following file: