【问题标题】:Uploadify and PHP move files issueUploadify和PHP移动文件问题
【发布时间】:2012-04-08 08:43:11
【问题描述】:

我创建了一个脚本,它将文件上传到一般上传文件夹,上传工作正常,但是当我尝试让脚本将文件从临时文件夹移动到上传文件夹时。我得到以下问题。

[23-Mar-2012 18:57:21 UTC] PHP Warning:  move_uploaded_file(): Unable to move '/var/tmp/php3O42Kn' to '/home3/***/***/***/MAINFOLDER/uploads/itworks/' in /home3/***/***/***/MAINFOLDER/admin/uploader.php on line 21

当我将上传文件夹与uploader.php 脚本放在同一目录中时,它正在工作,但是我将uploader.php 脚本放在/admin 文件夹中,同时将/uploads 保留在根文件夹中。下面是我正在使用的脚本。

uploader.php(主/管理员)

  <?php

    if (!empty($_FILES)) {
        $tempFile = $_FILES['Filedata']['tmp_name'];


        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
        $targetFile =  str_replace('//','/',$targetPath) . $filename;


        // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
        // $fileTypes  = str_replace(';','|',$fileTypes);
        // $typesArray = split('\|',$fileTypes);
        // $fileParts  = pathinfo($_FILES['Filedata']['name']);

        // if (in_array($fileParts['extension'],$typesArray)) {
                if (!file_exists($targetPath)) {  
                     mkdir(str_replace('//','/',$targetPath), 0755, true);  
                }

            move_uploaded_file($tempFile,$targetFile);
            echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
        // } else {
        //  echo 'Invalid file type.';
        // }
    }
    ?>

upload.php(主/管理员)

<script type="text/javascript"> 
    $(document).ready(function() {
        $("#file_upload").uploadify({
            'uploader'     : 'includes/uploadify.swf',
            'script'         : 'uploadify.php',
            'folder'         : '../uploads',
            'cancelImg'      : 'includes/images/cancel.png',
            'multi'          : true,
            'auto'           : false,
            'fileTypeExts'        : '*.jpg;*.gif;*.png',
            'fileTypeDesc'       : 'Image Files (.JPG, .GIF, .PNG)',
            'queueID'        : 'custom-queue',
            'queueSizeLimit' : 10,
            'simUploadLimit' : 3,
            'sizeLimit'   : 10240000,
            'removeCompleted': true,
            'onAllComplete'  : function(stats) {
                $('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.');
            }
        });
    });
</script>

我认为问题出在:'folder' : '../uploads',。理想情况下,我希望 uploader.php 文件自动将目录推回一级,但是我的所有方法似乎都不起作用。

非常感谢任何可以帮助我阐明这一点的人!

【问题讨论】:

  • 此错误可能来自多个问题。您确定这些目录存在于您访问它们的路径中吗?
  • 确保您要复制到的文件夹具有正确的权限
  • 您是否仔细检查了您要从和要移动的目录的权限?请记住,Web 服务器或 PHP 进程正在运行的任何用户都需要对两者的写入权限。
  • 你现在的目录结构是什么,是root -> main -> admin 吗?
  • 我当前的目录布局如下,主要有两个子文件夹:admin,然后是 uploads。所以主要-> 管理员。主 -> 上传

标签: php javascript upload directory uploadify


【解决方案1】:

它可能是以下之一,具体取决于根与当前管理目录的距离。

'../../uploads'

'../../../uploads

【讨论】:

  • 它只返回一个目录。所以它应该只是“../”对吗?
  • 附件是我当前结构的截图(我知道很乱,我会稍后清理)cl.ly/FGSb这是你需要的吗?
  • 您是否尝试过直接使用uploads 而不是../uploads?因为正如您所看到的,您将文档根目录连接到文件夹路径,所以我认为不需要再上一层。要么删除$_SERVER['DOCUMENT_ROOT'],要么将../uploads 更改为uploads,看看是否有效。
  • 我试过了,它在 admin 文件夹中创建了一个目录,所以 admin/uploads/testa 没有文件放在 testa 文件夹中,并显示以下错误:[未定义变量:/admin/ 中的文件名第 9 行的 uploadify.php PHP 警告:move_uploaded_file():copy() 函数的第二个参数不能是第 22 行的 /admin/uploadify.php 中的目录 PHP 警告:move_uploaded_file():无法移动 '/var/tmp /phpLWWnLe' 到 '/admin/files/testb/' 在 /admin/uploadify.php 第 22 行
  • 我正要问文件名是在哪里定义的。
【解决方案2】:

如果您说当前配置工作正常,那么它应该适用于任何文件夹。 但问题很容易来自不可写文件夹(您检查文件夹权限吗?)到“../uploads/”中缺少尾部斜杠。

或者正如 Interstellar_Coder 所建议的那样,可能缺少另一组“../”。

【讨论】:

  • php 脚本在 main/uploads 文件夹中创建目录 alright(权限设置为 777 用于测试)。问题是将文件从 temp 移动到它。
猜你喜欢
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多