使用PHP move_uploaded_file函数权限被拒绝

时间:2012-07-07 01:59:45

标签: php permissions chmod

我上传了一个文件到服务器后,因为我遇到了这个错误,我已经被困在这段代码上好几天了。它是一个在Apache上运行的Windows服务器

尝试了各种解决方案,但仍然收到错误。我尝试将完整权限更改为该服务器上的所有人。

我将默认的PHP上传tmp文件更改为我的应用程序内部但我仍然遇到此错误。

警告:move_uploaded_file(C:\ My_Workspace \ ojs2002)[function.move-uploaded-file]:无法打开流:第78行的C:\ My_Workspace \ ojs \ admin \ include \ fileupload.php中的权限被拒绝< / p>

警告:move_uploaded_file()[function.move-uploaded-file]:无法在C:\ My_Workspace中将'C:\ My_Workspace \ ojs \ tmp \ phpCB78.tmp'移动到'C:\ My_Workspace \ ojs2002'第78行的ojs \ admin \ include \ fileupload.php

 // copy the file, making the destination directory if necessary
 $filedir = 'C:/My_Workspace/ojs2002/'.basename($_FILES['articlefile']['name']);


 chmod($_FILES["articlefile"]["tmp_name"], 0777);
 chmod($filedir, 0777 );        

 move_uploaded_file($_FILES["articlefile"]["tmp_name"],$filedir);

代码在Linux服务器上运行良好,但在Windows上运行不正常。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

chmod无法在Windows上运行,因为它使用不同类型的权限系统。确保用户Apache运行时对您尝试将文件移动到的文件夹具有完全写入权限(右键单击并单击共享或权限,具体取决于Windows的版本)

答案 1 :(得分:0)

我决定改用:

move_uploaded_file($uploaded_file, $file_path);

file_put_contents($file_path, file_get_contents($uploaded_file));
@unlink($uploaded_file);

unlink可能会失败,但我并不太担心。