上传和PHP移动文件的问题


Uploadify and PHP move files issue

我已经创建了一个脚本,它将把文件上传到一个通用的上传文件夹,但当我试图让脚本将文件从临时文件夹移动到上传文件夹时,上传工作很好。我有以下问题。

[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保留在根文件夹中。下面是我正在使用的脚本。

上传器.php(main/admin)

  <?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(main/admin)

<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文件能自动将目录向后推一级,但我的所有方法似乎都不起作用。

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

根据根目录距离当前管理目录的距离,它可能是以下内容之一。

'../../uploads'

'../../../uploads

如果您说当前配置运行良好,那么它应该适用于任何文件夹。但问题很容易来自不可写的文件夹(你检查了文件夹权限吗?)到"../uploads/".中缺少尾部斜杠

或者,正如星际指挥官所建议的,也许还有另一套"../"缺少。