bug #21211 Classloader tmpname (lyrixx)

This PR was merged into the 2.7 branch.

Discussion
----------

Classloader tmpname

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

In dev env:

from:

> Notice: tempnam(): file created in the system's temporary directory

to:

> Failed to write cache file "/var/www/html/var/cache/dev/classes.php".

Commits
-------

3c887da4f3 [ClassLoader] Throw an exception if the cache is not writeable
This commit is contained in:
Fabien Potencier 2017-01-09 06:56:46 -08:00
commit e9f2512c04
1 changed files with 7 additions and 1 deletions

View File

@ -275,7 +275,13 @@ REGEX;
*/
private static function writeCacheFile($file, $content)
{
$tmpFile = tempnam(dirname($file), basename($file));
$dir = dirname($file);
if (!is_writable($dir)) {
throw new \RuntimeException(sprintf('Cache directory "%s" is not writable.', $dir));
}
$tmpFile = tempnam($dir, basename($file));
if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
@chmod($file, 0666 & ~umask());