PHP的文件上传在服务器

时间:2015-08-30 20:48:13

标签: php file-upload

我正在开发一个包含文件上传功能的网站。这在localhost上工作得很好,但是一旦我将网站上传到我的服务器就失败了。

我有以下代码来处理文件上传:

case "upload_to_gallery":

        /*******************************
         ****   UPLOAD TO GALLERY   ****
         *******************************/

        if ($con->checkLogin() && isset($_FILES['uploaded_files'])) {
            $gallery_name = $_POST['gallery_name'];

            for ($i = 0; $i < count($_FILES['uploaded_files']['name']); $i++) {
                list($width, $height, $type, $attr) = getimagesize($_FILES["uploaded_files"]['tmp_name'][$i]);

                if ($_FILES['uploaded_files']['type'][$i] == "image/png"
                    || $_FILES['uploaded_files']['type'][$i] == "image/jpeg"
                    || $_FILES['uploaded_files']['type'][$i] == "image/gif"
                ) {
                    $imgPath = "../files/img/galleries/" . $gallery_name . "/" . $_FILES['uploaded_files']['name'][$i];
                    $thumbPath = "../files/img/galleries/" . $gallery_name . "/thumbs/" . $_FILES['uploaded_files']['name'][$i];

                    move_uploaded_file($_FILES['uploaded_files']['tmp_name'][$i], strtolower($imgPath));

                    $filehandler->makeThumbnails($imgPath, $thumbPath, 300, 215);
                }

            }
            header('location: '.MAINPATH.'/galleri/'.$gallery_name.'?billeder_uploadet');

当我尝试在服务器上上传一些文件(图像)时,我得到的错误是:

  

警告:move_uploaded_file(../ files / img / galleries / test / 1383204_10200900060289437_410542691_n.jpg)[function.move-uploaded-file]:无法打开流:/ var / www / xn-中没有这样的文件或目录第35行的-cstanlg-rxa.dk/public_html/web/templates/formReceiverPost.php

     

警告:move_uploaded_file()[function.move-uploaded-file]:无法在/ var / www /中将'/ tmp / phptu17Hf'移动到'../files/img/galleries/test/1383204_10200900060289437_410542691_n.jpg'第35行的xn--cstanlg-rxa.dk/public_html/web/templates/formReceiverPost.php

     

警告:getimagesize(../ files / img / galleries / Test / 1383204_10200900060289437_410542691_n.jpg)[function.getimagesize]:无法打开流:/ var / www / xn中没有这样的文件或目录 - cstanlg-rxa第158行的.dk / public_html / lib / class / FileHandler.php

     

警告:在第159行的/var/www/xn--cstanlg-rxa.dk/public_html/lib/class/FileHandler.php中除以零

     

警告:在第159行的/var/www/xn--cstanlg-rxa.dk/public_html/lib/class/FileHandler.php中除以零

     

警告:imagecreatetruecolor()[function.imagecreatetruecolor]:第162行/var/www/xn--cstanlg-rxa.dk/public_html/lib/class/FileHandler.php中的图像尺寸无效

当我尝试将0个文件上传到服务器时,它会给我这个错误:

  

警告:getimagesize()[function.getimagesize]:第26行的/var/www/xn--cstanlg-rxa.dk/public_html/web/templates/formReceiverPost.php中的文件名不能为空

我认为没有意义,因为我正在检查是否有任何文件通过..

发送

我认为它可能与服务器上的权限有关,但所有相关文件夹都设置为'755'。

我希望有人知道问题可能是什么。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

仔细检查您的错误。

  

警告:move_uploaded_file(../ files / img / galleries / test /1383204_10200900060289437_410542691_n.jpg)[function.move-uploaded-file]:无法打开流:没有这样的文件或目录第35行/var/www/xn--cstanlg-rxa.dk/public_html/web/templates/formReceiverPost.php

     

警告:move_uploaded_file()[function.move-uploaded-file]:无法移动&#39; / tmp / phptu17Hf&#39;到&#39; ../ files / img / galleries / 测试 /1383204_10200900060289437_410542691_n.jpg'在第35行的/var/www/xn--cstanlg-rxa.dk/public_html/web/templates/formReceiverPost.php

     

警告:getimagesize(../ files / img / galleries / 测试 /1383204_10200900060289437_410542691_n.jpg)[function.getimagesize]:无法打开流:/ var / www中没有这样的文件或目录第158行/xn--cstanlg-rxa.dk/public_html/lib/class/FileHandler.php

您的路径中同时包含Test<str name="suggestAnalyzerFieldType">string</str> <str name="storeDir">suggester_fuzzy_dir</str>

请记住,Linux对文件和文件夹名称区分大小写。 Windows不是。这可能解释了为什么它适用于您的开发环境以及为什么它不再适用于您的prod服务器。

所以选择其中一个并坚持使用它(我不建议在你的路径中使用大写字符)。