在php中将文件上传到网络驱动器

时间:2012-06-14 12:19:53

标签: php file-upload iis-7 network-drive

用于将文件上传到映射网络驱动器的php脚本无效。以下是php脚本:

$newfilename = "something.wav";
$path  = 'Y:\\uploaded\\'.$newfilename;
copy($_FILES['ufile']['tmp_name'], $path);

我还检查了网络驱动器文件夹的权限。我有Y驱动器映射到上传文件夹中的网络驱动器(10.4.4.32)d驱动器。它拥有完全控制权限。我尝试了以下网络驱动路径:

  • Y:\上传\
  • \\ 10.4.4.32 \ d $ \上传\
  • move_uploaded_file($ _ FILES ['ufile'] ['tmp_name'],$ path);

但是,它适用于本地驱动器,如:

  • d:\上传\ 该文件已上载到本地驱动器中,但无法上载到网络驱动器中。我已经使用php 5.3和IIS 7进行应用程序

显示的错误: 警告:复制(\ 10.4.4.32 \ d $ \ uploaded \ test.wav):无法打开流:第107行的C:\ inetpub \ wwwroot \ myapp \ upload.php中的权限被拒绝 < / p>

我允许对EVERYONE用户上传文件夹的属性进行完全控制。是否还有其他许可,我应该修复。

2 个答案:

答案 0 :(得分:0)

首先,检查copy()是否返回false。这表明确实存在错误。

然后,启用php.ini中的track_errors指令,以及display_errorserror_reporting到最高级别。 激活track_errors后(重新启动网络服务器),请在复制后使用以下行:

var_dump($php_errormsg, error_get_last());

这可以让你更好地了解这个问题。


另外请确保如果您正在使用safe_modeopen_basedir,则允许您移动的路径。

答案 1 :(得分:0)

网络驱动器可能无法用于apache和php,因此请使用此$ path =“\\ machine-name \ share_path \”;

在BOTH计算机上设置用户帐户,例如user:ApacheUser

转到服务并单击Apache,并使用刚刚创建的帐户登录(第二个选项卡)源计算机的Apache服务

重启apache服务

然后它现在应该工作