function SiteConfigurationExcluder::syncDefaultSiteDirectoryPermissions

Makes `sites/default` permissions the same in live and stage directories.

Parameters

\Drupal\package_manager\Event\PreApplyEvent $event: The event being handled.

Throws

\Drupal\Core\File\Exception\FileException If the permissions of the live `sites/default` cannot be determined, or cannot be changed on the staged `sites/default`.

File

core/modules/package_manager/src/PathExcluder/SiteConfigurationExcluder.php, line 98

Class

SiteConfigurationExcluder
Excludes site configuration files from stage directories.

Namespace

Drupal\package_manager\PathExcluder

Code

public function syncDefaultSiteDirectoryPermissions(PreApplyEvent $event) : void {
  $staged_dir = $this->getDefaultSiteDirectoryPath($event->sandboxManager
    ->getSandboxDirectory());
  // If the directory doesn't even exist, there's nothing to do here.
  if (!is_dir($staged_dir)) {
    return;
  }
  $live_dir = $this->getDefaultSiteDirectoryPath($this->pathLocator
    ->getProjectRoot());
  $permissions = fileperms($live_dir);
  if ($permissions === FALSE) {
    throw new FileException("Could not determine permissions for '{$live_dir}'.");
  }
  if (!$this->fileSystem
    ->chmod($staged_dir, $permissions)) {
    throw new FileException("Could not change permissions on '{$staged_dir}'.");
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.