Skip to content

Commit

Permalink
AssetAdapter - If the visibility is already correct, do not try to re…
Browse files Browse the repository at this point in the history
…-set it.

Attempting to set the visibility of a file/folder when the filesystem is already set correctly causes "Operation not permitted" errors on some Linux servers. This commit fixes that issue.
  • Loading branch information
nathanbrauer committed Jul 23, 2023
1 parent 7c8440d commit c6efce8
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/Flysystem/AssetAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,29 @@ protected function configureServer($forceOverwrite = false)

// Apply each configuration
$config = new FlysystemConfig();
$config->set('visibility', $visibility);
foreach ($configurations as $file => $template) {
// Ensure file contents
if ($forceOverwrite || !$this->has($file)) {
if ($this->has($file)) {
$perms = $this->getVisibility($file);
if ($perms['visibility'] === $visibility) {
// If the visibility is already correct, do not try to re-set it.
// Attempting to set the visibility of a file/folder when the filesystem is already
// set correctly causes "Operation not permitted" errors on some Linux servers.
$config->set('visibility', null);
} else {
$config->set('visibility', $visibility);
}
}
// Evaluate file
$content = $this->renderTemplate($template);
$success = $this->write($file, $content, $config);
if (!$success) {
throw new Exception("Error writing server configuration file \"{$file}\"");
}
}
$perms = $this->getVisibility($file);

$perms ??= $this->getVisibility($file);
if ($perms['visibility'] !== $visibility) {
// Ensure correct permissions
$this->setVisibility($file, $visibility);
Expand Down

0 comments on commit c6efce8

Please sign in to comment.