diff --git a/includes/file.inc b/includes/file.inc
index 7729544f172477cf4db19ad810b03bdb8c9f9334..0ff21f25bb1614df1cd91b1e93c207f669477326 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -948,7 +948,7 @@ function file_delete(stdClass $file, $force = FALSE) {
  * entry recorded in the files table.
  *
  * @param $path
- *   A string containing a filepath or URI.
+ *   A string containing a file path or (streamwrapper) URI.
  * @return
  *   TRUE for success or path does not exist, or FALSE in the event of an
  *   error.
@@ -957,6 +957,8 @@ function file_delete(stdClass $file, $force = FALSE) {
  * @see file_unmanaged_delete_recursive()
  */
 function file_unmanaged_delete($path) {
+  // Resolve streamwrapper URI to local path.
+  $path = drupal_realpath($path);
   if (is_dir($path)) {
     watchdog('file', '%path is a directory and cannot be removed using file_unmanaged_delete().', array('%path' => $path), WATCHDOG_ERROR);
     return FALSE;
@@ -989,14 +991,16 @@ function file_unmanaged_delete($path) {
  * Note that this only deletes visible files with write permission.
  *
  * @param $path
- *   A string containing a URI, filepath. or directory path.
+ *   A string containing eiher an URI or a file or directory path.
  * @return
- *   TRUE for success or path does not exist, or FALSE in the event of an
+ *   TRUE for success or if path does not exist, FALSE in the event of an
  *   error.
  *
  * @see file_unmanaged_delete()
  */
 function file_unmanaged_delete_recursive($path) {
+  // Resolve streamwrapper URI to local path.
+  $path = drupal_realpath($path);
   if (is_dir($path)) {
     $dir = dir($path);
     while (($entry = $dir->read()) !== FALSE) {