move_uploaded_file()在localhost上工作但在服务器上工作

时间:2015-06-24 23:27:45

标签: php

以下代码在我的localhost上运行良好,但它在我的实时服务器上显示以下错误

警告: move_uploaded_file(... / uploads / 76948893.jpeg):无法打开流:没有此类文件或目录

警告: move_uploaded_file():无法将'/ tmp / phppxvRs8'移至'... / uploads / 76948893.jpeg'

它做的很简单,它采用来自html表单的数组[“pictures”]上的图像,并使用随机数字名称保存文件夹“... / uploads /”上的每个图像作为名称文件并保留原始扩展名。

任何人都知道如何让它在我的服务器上运行?

   //Image Uploader
    $images=[];
    $directory = '.../uploads/';
    foreach ($_FILES["pictures"]["error"] as $key => $error) {
        $new_file_name = rand (10000000,99999999);
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
       /* echo '<br>';
        echo $directory.$new_file_name.".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1);*/

        if(move_uploaded_file($_FILES['pictures']['tmp_name'][$key], 
                            $directory
                            .$new_file_name
                            .".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1)))               {
            array_push($images,$new_file_name.".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1));
            $images_validator=true;
        }else{
        //Error
        }

    }
}

2 个答案:

答案 0 :(得分:1)

这可能有很多原因,请查看以下内容

  1. 您需要uploads目录的WRITE权限。我假设你的本地机器运行windows&amp;你的托管环境是linux

  2. 像@Darren建议的那样,使用绝对路径。将$directory更改为$directory = getcwd() . 'uploads/';

答案 1 :(得分:0)

如果这在您的本地计算机上运行但在服务器上运行,则有2个简单的答案我可以在后面思考。 1.该文件夹不存在于服务器上,2。有人评论您没有权限写入/读取服务器上的该文件夹....我会检查服务器配置以确保您的应用程序池或用户已阅读/写入文件夹的权限