在一个Windows文件服务器(unc路径)在php中重命名文件

问题描述:

在PHP中,我想重命名(移动/复制)Windows文件服务器上的文件: “\ myserver \ folder1 \ folder2 \ myfile.pdf” 到 “\ MYSERVER \文件夹1 \文件夹2 \ OLD \ myfile.pdf”在一个Windows文件服务器(unc路径)在php中重命名文件

(所有文件夹已经存在,目标文件不存在)

我尝试这样做:

copy("\\\\myserver\\folder1\\folder2\\myfile.pdf", "\\\\myserver\\folder1\\folder2\\OLD\\myfile.pdf"); 

copy("//myserver/folder1/folder2/myfile.pdf", "//myserver/folder1/folder2/OLD/myfile.pdf"); 

我收到:

[function.copy]: failed to open stream: Permission denied 

我在/登录的用户有权重命名/移动/删除/复制到共享/文件夹的计算机。

我猜我需要以某种方式给php权限,或者运行php作为我的用户?要么?

PHP将以您的Web服务器运行的任何用户身份运行。您需要将该文件夹的权限授予任何用户帐户。

+0

这是有道理的,但我可以改变Apache的Windows服务作为不同于'本地系统'的用户(并且该用户有权限),或者? – 2011-02-02 14:20:44

不使用复制...使用move_uploaded代替

这是一个例子,从一个形式获取图像:

$img = 'sample.jpg; 
$path = '//nameofyourpcinyournetwork/sharedfolder/folderyoulike/'; 
$pathwithimg = $path.$img; 
if (!is_dir($path)) { 
    mkdir($path, 0644, TRUE); // TRUE for make it recursive 
} 
if (file_exists($pathwithimg)) { 
unlink($pathwithimg); 
move_uploaded_file($_FILES["file"]["tmp_name"], $pathwithimg); 
chmod($pathwithimg, 0644); 
} 

变化safe_mod为关,如果你拥有了它

P.D.是的,我知道,这个职位是5年前...但没有人说有效的答案和其他人(像我一样)可能会发现这个问题