// don't die on autoload

This commit is contained in:
Rémi Gaillard
2013-11-04 18:08:24 +01:00
parent 0a65de5e5f
commit f5cc6862cb
+9 -15
View File
@@ -137,24 +137,18 @@ class Autoload
// Write classes index on disc to cache it
$filename = $this->root_dir.Autoload::INDEX_FILE;
if ((file_exists($filename) && !is_writable($filename)) || !is_writable(dirname($filename)))
$filename_tmp = tempnam(dirname($filename), basename($filename.'.'));
if ($filename_tmp !== false && file_put_contents($filename_tmp, $content, LOCK_EX) !== false)
{
header('HTTP/1.1 503 temporarily overloaded');
// Cannot use PrestaShopException in this context
die('/cache/class_index.php is not writable, please give write permissions (chmod 666) on this file.');
}
else
{
$filename_tmp = tempnam(dirname($filename), basename($filename.'.'));
if($filename_tmp !== FALSE and file_put_contents($filename_tmp, $content, LOCK_EX) !== FALSE)
{
@rename($filename_tmp, $filename);
@chmod($filename, 0666);
}
if (!rename($filename_tmp, $filename))
unlink($filename_tmp);
else
// $filename_tmp couldn't be written. $filename should be there anyway (even if outdated), no need to die.
error_log('Cannot write temporary file '.$filename_tmp);
@chmod($filename, 0666);
}
// $filename_tmp couldn't be written. $filename should be there anyway (even if outdated), no need to die.
else
error_log('Cannot write temporary file '.$filename_tmp);
$this->index = $classes;
}