Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[Filesystem] Follow symlinks when dumping files#50437
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
[Filesystem] Follow symlinks when dumping files#50437
Uh oh!
There was an error while loading.Please reload this page.
Conversation
41df08a to6805bb8CompareUh oh!
There was an error while loading.Please reload this page.
nicolas-grekas left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LGTM. Can you please consider this minor patch and figure out the failures on appveyor?
--- a/src/Symfony/Component/Filesystem/Filesystem.php+++ b/src/Symfony/Component/Filesystem/Filesystem.php@@ -667,14 +667,12 @@ class Filesystem throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be string or resource, array given.', __METHOD__)); }- if (is_link($filename) && $linkTarget = $this->readlink($filename)) {- $this->dumpFile(Path::makeAbsolute($linkTarget, \dirname($filename)), $content);+ $dir = \dirname($filename);- return;+ if (null !== $linkTarget = $this->readlink($filename)) {+ $filename = Path::makeAbsolute($linkTarget, $dir); }- $dir = \dirname($filename);- if (!is_dir($dir)) { $this->mkdir($dir);
ausi commentedMay 30, 2023
ausi commentedMay 30, 2023
Done ind729da4 |
d729da4 to4aa8b46Comparenicolas-grekas commentedMay 30, 2023
Thank you@ausi. |
…ausi)This PR was merged into the 5.4 branch.Discussion----------[Filesystem] Fix broken symlink tests Windows PHP 7.4+| Q | A| ------------- | ---| Branch? | 5.4| Bug fix? | yes| New feature? | no| Deprecations? | no| Tickets | Followup to#50437| License | MIT| Doc PR | -The test currently fail on windows with PHP >= 7.4```1) Symfony\Component\Filesystem\Tests\FilesystemTest::testReadBrokenLinkFailed asserting that two strings are equal.--- Expected+++ Actual@@ @@-'C:\…\Temp\1685536465.4767.1091468882/file'+'C:\…\Temp\1685536465.4767.1091468882\file'C:\…\src\Symfony\Component\Filesystem\Tests\FilesystemTest.php:1105```Commits-------d98a011 Fix broken symlink tests Windows PHP 7.4+
Currently, if
Filesystem::dumpFile()is called on a symlink, the link gets replaced with a new file.This is unexpected I think because both
Filesystem::appendToFile()as well asfile_put_contents()follow the symlink instead.This PR changes
dumpFile()to behave the same way.