Commit 65a31d68 authored by catch's avatar catch

Issue #1240256 by lyricnz, Akaoni: Fixed file_unmanaged_copy() Fails with...

Issue #1240256 by lyricnz, Akaoni: Fixed file_unmanaged_copy() Fails with Drupal 7.7+ and safe_mode() or open_basedir().
parent d8ca0259
...@@ -828,6 +828,10 @@ function file_valid_uri($uri) { ...@@ -828,6 +828,10 @@ function file_valid_uri($uri) {
* is reported. * is reported.
* - If file already exists in $destination either the call will error out, * - If file already exists in $destination either the call will error out,
* replace the file or rename the file based on the $replace parameter. * replace the file or rename the file based on the $replace parameter.
* - Provides a fallback using realpaths if the move fails using stream
* wrappers. This can occur because PHP's copy() function does not properly
* support streams if safe_mode or open_basedir are enabled. See
* https://bugs.php.net/bug.php?id=60456
* *
* @param $source * @param $source
* A string specifying the filepath or URI of the source file. * A string specifying the filepath or URI of the source file.
...@@ -907,8 +911,12 @@ function file_unmanaged_copy($source, $destination = NULL, $replace = FILE_EXIST ...@@ -907,8 +911,12 @@ function file_unmanaged_copy($source, $destination = NULL, $replace = FILE_EXIST
file_ensure_htaccess(); file_ensure_htaccess();
// Perform the copy operation. // Perform the copy operation.
if (!@copy($source, $destination)) { if (!@copy($source, $destination)) {
watchdog('file', 'The specified file %file could not be copied to %destination.', array('%file' => $source, '%destination' => $destination), WATCHDOG_ERROR); // If the copy failed and realpaths exist, retry the operation using them
return FALSE; // instead.
if ($real_source === FALSE || $real_destination === FALSE || !@copy($real_source, $real_destination)) {
watchdog('file', 'The specified file %file could not be copied to %destination.', array('%file' => $source, '%destination' => $destination), WATCHDOG_ERROR);
return FALSE;
}
} }
// Set the permissions on the new file. // Set the permissions on the new file.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment