bug #17626 Try to delete broken symlinks (IchHabRecht)
This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #17626).
Discussion
----------
Try to delete broken symlinks
If you delete the target of a symlink (at least on Windows systems) you
don't get the kind of the target anymore (obviously). Therefore it might
happen that a broken symlink to a directory should be removed with
unlink() which fails. This patch adds another check for a broken symlink
and tries to remove with rmdir() before throwing an exception. It helps
to clean up test folders on Windows systems (so already proofed by the
existing tests).
Commits
-------
8442ab1
[Filesystem] Try to delete broken symlinks
This commit is contained in:
commit
36cb46a71a
@ -161,8 +161,15 @@ class Filesystem
|
||||
}
|
||||
} else {
|
||||
if (true !== @unlink($file)) {
|
||||
$error = error_get_last();
|
||||
throw new IOException(sprintf('Failed to remove file "%s": %s.', $file, $error['message']));
|
||||
// handle broken symlinks on Windows systems
|
||||
if (is_link($file) && false === @readlink($file)) {
|
||||
if (true !== @rmdir($file)) {
|
||||
throw new IOException(sprintf('Failed to remove broken symlink "%s".', $file), 0, null, $file);
|
||||
}
|
||||
} else {
|
||||
$error = error_get_last();
|
||||
throw new IOException(sprintf('Failed to remove file "%s": %s.', $file, $error['message']));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user