Clear stat cache after calling filesystem commands
parent
d929a0813a
commit
61efd2998c
|
@ -130,7 +130,7 @@ class Filesystem
|
||||||
$it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS);
|
$it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS);
|
||||||
$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST);
|
$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST);
|
||||||
|
|
||||||
if ( !file_exists($target)) {
|
if (!file_exists($target)) {
|
||||||
mkdir($target, 0777, true);
|
mkdir($target, 0777, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,12 @@ class Filesystem
|
||||||
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
||||||
// Try to copy & delete - this is a workaround for random "Access denied" errors.
|
// Try to copy & delete - this is a workaround for random "Access denied" errors.
|
||||||
$command = sprintf('xcopy %s %s /E /I /Q', escapeshellarg($source), escapeshellarg($target));
|
$command = sprintf('xcopy %s %s /E /I /Q', escapeshellarg($source), escapeshellarg($target));
|
||||||
if (0 === $this->processExecutor->execute($command, $output)) {
|
$result = $this->processExecutor->execute($command, $output);
|
||||||
|
|
||||||
|
// clear stat cache because external processes aren't tracked by the php stat cache
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
if (0 === $result) {
|
||||||
$this->remove($source);
|
$this->remove($source);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -170,7 +175,12 @@ class Filesystem
|
||||||
// We do not use PHP's "rename" function here since it does not support
|
// We do not use PHP's "rename" function here since it does not support
|
||||||
// the case where $source, and $target are located on different partitions.
|
// the case where $source, and $target are located on different partitions.
|
||||||
$command = sprintf('mv %s %s', escapeshellarg($source), escapeshellarg($target));
|
$command = sprintf('mv %s %s', escapeshellarg($source), escapeshellarg($target));
|
||||||
if (0 === $this->processExecutor->execute($command)) {
|
$result = $this->processExecutor->execute($command, $output);
|
||||||
|
|
||||||
|
// clear stat cache because external processes aren't tracked by the php stat cache
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
if (0 === $result) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue