Improve error reporting on downloads and copies, refs #1228
parent
247d1aca41
commit
852c369575
|
@ -61,10 +61,10 @@ EOT
|
||||||
unset($phar);
|
unset($phar);
|
||||||
rename($tempFilename, $localFilename);
|
rename($tempFilename, $localFilename);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
@unlink($tempFilename);
|
||||||
if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) {
|
if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) {
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
unlink($tempFilename);
|
|
||||||
$output->writeln('<error>The download is corrupted ('.$e->getMessage().').</error>');
|
$output->writeln('<error>The download is corrupted ('.$e->getMessage().').</error>');
|
||||||
$output->writeln('<error>Please re-run the self-update command to try again.</error>');
|
$output->writeln('<error>Please re-run the self-update command to try again.</error>');
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,14 +103,17 @@ class RemoteFilesystem
|
||||||
$this->io->write(" Downloading: <comment>connection...</comment>", false);
|
$this->io->write(" Downloading: <comment>connection...</comment>", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$errorMessage = null;
|
$errorMessage = '';
|
||||||
set_error_handler(function ($code, $msg) use (&$errorMessage) {
|
set_error_handler(function ($code, $msg) use (&$errorMessage) {
|
||||||
$errorMessage = preg_replace('{^file_get_contents\(.+?\): }', '', $msg);
|
if ($errorMessage) {
|
||||||
if (!ini_get('allow_url_fopen')) {
|
$errorMessage .= "\n";
|
||||||
$errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')';
|
|
||||||
}
|
}
|
||||||
|
$errorMessage .= preg_replace('{^file_get_contents\(.*?\): }', '', $msg);
|
||||||
});
|
});
|
||||||
$result = file_get_contents($fileUrl, false, $ctx);
|
$result = file_get_contents($fileUrl, false, $ctx);
|
||||||
|
if ($errorMessage && !ini_get('allow_url_fopen')) {
|
||||||
|
$errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')';
|
||||||
|
}
|
||||||
restore_error_handler();
|
restore_error_handler();
|
||||||
|
|
||||||
// fix for 5.4.0 https://bugs.php.net/bug.php?id=61336
|
// fix for 5.4.0 https://bugs.php.net/bug.php?id=61336
|
||||||
|
@ -146,9 +149,17 @@ class RemoteFilesystem
|
||||||
|
|
||||||
// handle copy command if download was successful
|
// handle copy command if download was successful
|
||||||
if (false !== $result && null !== $fileName) {
|
if (false !== $result && null !== $fileName) {
|
||||||
$result = (bool) @file_put_contents($fileName, $result);
|
$errorMessage = '';
|
||||||
|
set_error_handler(function ($code, $msg) use (&$errorMessage) {
|
||||||
|
if ($errorMessage) {
|
||||||
|
$errorMessage .= "\n";
|
||||||
|
}
|
||||||
|
$errorMessage .= preg_replace('{^file_put_contents\(.*?\): }', '', $msg);
|
||||||
|
});
|
||||||
|
$result = (bool) file_put_contents($fileName, $result);
|
||||||
|
restore_error_handler();
|
||||||
if (false === $result) {
|
if (false === $result) {
|
||||||
throw new TransportException('The "'.$fileUrl.'" file could not be written to '.$fileName);
|
throw new TransportException('The "'.$fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue