2

我正在使用 move_uploaded_file 函数上传文件。这些文件被移动到正确的目录中,我看到了它的物理存在,但我无法打开它们。我收到“拒绝访问”错误。我查看了文件的属性,发现它没有所有者。

顺便说一句,我在 Windows 2008 上运行 IIS。

我检查了权限,一切都设置正确。运行 Web 服务的用户具有完全的管理员权限。

此外,我用 copy() 替换了 move_uploaded_file 函数,并且我能够访问该文件。它还将运行服务器的用户作为其所有者。

到底有什么可能是错的?

谢谢我感谢你的帮助。

更新: 文件移动后,我尝试使用 chmod($filename,0655) 设置权限,但这也不起作用。

更新2(解决方案): 好的,我想通了。系统管理员没有设置upload_tmp_dir。一旦我们添加了路径,它就起作用了。

源代码:

         // Check if file was uploaded
     if(isset($_FILES['formname']) && $_FILES['formname']['size'] > 8){
         $displayName = $_FILES['formname']['name'];
            $displayName = unixfilename(basename($displayName));

            $tempName = $_FILES['formname']['tmp_name'];

         $filename = $_FILES['formname']['name'];
         $fileType = substr($filename, strrpos($filename,".")+1);
         $filename = substr($filename,0,strrpos($filename,".")) . date("_Ymd_His") . ".$fileType"; // Add unique identifier
         $filename = unixfilename(basename($filename)); 

         $destinationPath = "xx\yy\zz\\";

         // Check if the file is of a valid type
         if($fileType == "txt"){
             // Check if file exists in processor folder
             if(!file_exists($destinationPath.$filename)){
                if(move_uploaded_file($tempName,$destinationPath.$filename)){
                    if(file_exists($destinationPath.$filename)){
 // success
4

2 回答 2

0

检查谁是实际上传的用户

echo exec('whoami');
于 2010-11-01T21:04:08.783 回答
0

除了upload_tmp_dir在您的 php.ini 文件中进行设置外,请确保您设置的目录是 PHP 可写的。

如果您在 IIS 中使用 PHP 管理器,则默认情况下 PHP 进程对我来说默认是不可写的upload_tmp_dirC:\Windows\Temp

于 2017-05-10T14:43:12.813 回答