2011-05-20 29 views
0

大,StackOverflow的编辑改变了这个问题,我的标题用蹩脚的英语PHP文件拷贝有空格的文件名

我不能找到一种方法来复制一个文件,在文件名与PHP的空间。我试图用"\ "替换空间,但它不起作用。

PHP的警告: 副本(/家/用户/图片/蜂窝\ 棉\罗\ 1.JPG): 未能打开流:没有这样的文件或目录

回答

3

处所应不成问题。这可能是一个权限问题。 PHP是否有权限访问该文件?

+0

是什么,如果你不逃个错误信息,请更换空间带反斜杠的空格? – Lasar 2011-05-20 10:33:33

0

做一个file_exists()拳头:

$fileToCopy = '/home/user/images/Honeycomb Cotton Polo 1.jpg'; 
$target  = '/var/www/images/'; 

if (file_exists($fileToCopy)) { 
    if (is_readable($fileToCopy)) { 
     if (is_writeable(dirname($target))) { 
      copy($fileToCopy, $target); 
     } else { 
      die('You dont have permission to write into '.dirname($target)); 
     } 
    } else { 
     die('You dont have permission to read '.$fileToCopy); 
    } 
} else { 
    die('File '.$fileToCopy.' does not exist'); 
} 
+0

检查一个文件是否存在是一件好事,但它不能解决存在并且不存在的文件的问题。 – Sylverdrag 2011-05-20 10:38:27

+0

如果找不到它,它不存在于您正在查看的路径中! – powtac 2011-05-20 10:39:55

+1

不开玩笑。但是IT不回答这个问题。该OP试图复制一个文件,并触发“找不到文件”错误。显然,OP认为该文件存在于该位置。问题是“为什么找不到文件?”。在您收到错误消息说没有找到文件后添加file_exists()并不能帮助回答问题。唯一会发生的是,OP不会收到原始错误信息,而是会收到您的自定义错误消息,告诉他几乎是同样的事情。 – Sylverdrag 2011-05-20 11:14:17

0

%20

你的情况替换空间: 副本(/家/用户/图片/蜂窝\%20Cotton \%20Polo \%201。 JPG)

0

%20

$file_path = '/home/user/images/Honeycomb Cotton Polo 1.jpg'; 
$file_path = preg_replace('/\s/i', '%20', $file_path); 

$new_path = '/home/user/images/Honeycomb-Cotton-Polo-1-copy.jpg'; 

copy($file_path, $new_path);