bug #23398 [Filesystem] Dont copy perms when origin is remote (nicolas-grekas)
This PR was merged into the 2.7 branch.
Discussion
----------
[Filesystem] Dont copy perms when origin is remote
| Q | A
| ------------- | ---
| Branch? | 2.7
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #23312
| License | MIT
| Doc PR | -
Commits
-------
7b442211dc
[Filesystem] Dont copy perms when origin is remote
This commit is contained in:
commit
311e627828
@ -37,7 +37,8 @@ class Filesystem
|
|||||||
*/
|
*/
|
||||||
public function copy($originFile, $targetFile, $overwriteNewerFiles = false)
|
public function copy($originFile, $targetFile, $overwriteNewerFiles = false)
|
||||||
{
|
{
|
||||||
if (stream_is_local($originFile) && !is_file($originFile)) {
|
$originIsLocal = stream_is_local($originFile) || 0 === stripos($originFile, 'file://');
|
||||||
|
if ($originIsLocal && !is_file($originFile)) {
|
||||||
throw new FileNotFoundException(sprintf('Failed to copy "%s" because file does not exist.', $originFile), 0, null, $originFile);
|
throw new FileNotFoundException(sprintf('Failed to copy "%s" because file does not exist.', $originFile), 0, null, $originFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,14 +69,16 @@ class Filesystem
|
|||||||
throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile);
|
throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($originIsLocal) {
|
||||||
// Like `cp`, preserve executable permission bits
|
// Like `cp`, preserve executable permission bits
|
||||||
@chmod($targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111));
|
@chmod($targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111));
|
||||||
|
|
||||||
if (stream_is_local($originFile) && $bytesCopied !== ($bytesOrigin = filesize($originFile))) {
|
if ($bytesCopied !== $bytesOrigin = filesize($originFile)) {
|
||||||
throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile);
|
throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a directory recursively.
|
* Creates a directory recursively.
|
||||||
|
Reference in New Issue
Block a user