Use Filesystem::chmod instead of chmod when dumping file

This adds consistency as discussed in ca5eea5c19 (commitcomment-5804089)
This commit is contained in:
Romain Neutron 2014-03-31 11:35:42 +02:00
parent 89742b0275
commit c2ffefd0ef
3 changed files with 25 additions and 7 deletions

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
class CompilerDebugDumpPass implements CompilerPassInterface class CompilerDebugDumpPass implements CompilerPassInterface
@ -24,8 +25,11 @@ class CompilerDebugDumpPass implements CompilerPassInterface
$filesystem = new Filesystem(); $filesystem = new Filesystem();
$filesystem->dumpFile($filename, implode("\n", $container->getCompiler()->getLog()), null); $filesystem->dumpFile($filename, implode("\n", $container->getCompiler()->getLog()), null);
// discard chmod failure (some filesystem may not support it) try {
@chmod($filename, 0666 & ~umask()); $filesystem->chmod($filename, 0666, umask());
} catch (IOException $e) {
// discard chmod failure (some filesystem may not support it)
}
} }
public static function getCompilerLogFilename(ContainerInterface $container) public static function getCompilerLogFilename(ContainerInterface $container)

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Dumper\XmlDumper; use Symfony\Component\DependencyInjection\Dumper\XmlDumper;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
/** /**
@ -31,7 +32,10 @@ class ContainerBuilderDebugDumpPass implements CompilerPassInterface
$filename = $container->getParameter('debug.container.dump'); $filename = $container->getParameter('debug.container.dump');
$filesystem = new Filesystem(); $filesystem = new Filesystem();
$filesystem->dumpFile($filename, $dumper->dump(), null); $filesystem->dumpFile($filename, $dumper->dump(), null);
// discard chmod failure (some filesystem may not support it) try {
@chmod($filename, 0666 & ~umask()); $filesystem->chmod($filename, 0666, umask());
} catch (IOException $e) {
// discard chmod failure (some filesystem may not support it)
}
} }
} }

View File

@ -12,6 +12,7 @@
namespace Symfony\Component\Config; namespace Symfony\Component\Config;
use Symfony\Component\Config\Resource\ResourceInterface; use Symfony\Component\Config\Resource\ResourceInterface;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
/** /**
@ -93,14 +94,23 @@ class ConfigCache
*/ */
public function write($content, array $metadata = null) public function write($content, array $metadata = null)
{ {
$mode = 0666 & ~umask(); $mode = 0666;
$umask = umask();
$filesystem = new Filesystem(); $filesystem = new Filesystem();
$filesystem->dumpFile($this->file, $content, null); $filesystem->dumpFile($this->file, $content, null);
@chmod($this->file, $mode); try {
$filesystem->chmod($this->file, $mode, $umask);
} catch (IOException $e) {
// discard chmod failure (some filesystem may not support it)
}
if (null !== $metadata && true === $this->debug) { if (null !== $metadata && true === $this->debug) {
$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null); $filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null);
@chmod($this->getMetaFile(), $mode); try {
$filesystem->chmod($this->getMetaFile(), $mode, $umask);
} catch (IOException $e) {
// discard chmod failure (some filesystem may not support it)
}
} }
} }