Php 移动\u上传的\u文件()在本地主机上但在服务器上工作

Php 移动\u上传的\u文件()在本地主机上但在服务器上工作,php,Php,下面的代码在我的本地主机上运行良好,但在我的live server上显示了以下错误 警告:移动上传的文件(…/uploads/76948893.jpeg):无法打开流:没有这样的文件或目录 警告:移动上传的文件():无法将“/tmp/phppxvRs8”移动到“…/uploads/76948893.jpeg” 它所做的很简单,它获取来自html表单的数组[“pictures”]上的图像,并将每个图像保存在文件夹“../uploads/”中,使用随机数字名称作为文件名,并保留原始扩展名 有人知道如

下面的代码在我的本地主机上运行良好,但在我的live server上显示了以下错误

警告:移动上传的文件(…/uploads/76948893.jpeg):无法打开流:没有这样的文件或目录

警告:移动上传的文件():无法将“/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
        }

    }
}
//图像上传器
$images=[];
$directory='…/uploads/';
foreach($_文件[“图片”][“错误”]为$key=>$error){
$new_file_name=rand(10000009999999);
如果($error==UPLOAD\u ERR\u OK){
$tmp_name=$_文件[“图片”][“tmp_名称”][$key];
$name=$_文件[“图片”][“名称”][$key];
/*回声“
”; echo$directory.$new_file_name.“.”.substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key],“/”+1)*/ 如果(移动上传的文件($文件['pictures']['tmp\U name'][$key], $directory .$new\u文件名 .substr($_文件['pictures']['type'][$key],strpos($_文件['pictures']['type'][$key],“/”)+1))){ 数组推送($images,$new_file_name.“.”。substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key],“/”+1)); $images\u validator=true; }否则{ //错误 } } }
原因可能很多,请检查以下内容

  • 您需要对
    上载
    目录具有写入权限。我假设您的本地计算机运行windows&您的托管环境是linux

  • 就像@Darren建议的那样,使用绝对路径。将
    $directory
    更改为
    $directory=getcwd()上传/'


  • 如果它在本地机器上运行,而不是在服务器上运行,那么我可以马上想到两个简单的答案。1.服务器2上不存在该文件夹。有人评论说,您没有权限在服务器上写入/读取该文件夹……我会检查服务器配置,以确保您的应用程序池或用户具有对该文件夹的读取/写入权限

    What@Fred ii-所说,然后尝试绝对路径而不是相对路径。(将
    $directory
    更改为
    $directory=getcwd().“uploads/”;
    )另外,您需要将
    ../
    更改为
    。/
    2点而不是3点。感谢您的回复。文件夹权限听起来可能是问题所在,但我已将ftp中的文件夹权限设置为RWXRWX,但仍然显示相同的问题。。。是否有其他方法来设置权限?(我是这方面的新手…(3点没问题,因为上传文件夹就在这里)我的错!你知道这两个点是对的!弗雷德,谢谢你两个正确的答案!