簡體   English   中英

move_uploaded_file()在本地主機上運行,​​但在服務器上

[英]move_uploaded_file() working on localhost but on server

以下代碼在我的本地主機上可以正常工作,但在實時服務器上顯示以下錯誤

警告: 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
        }

    }
}

可能有很多原因,請檢查以下內容

  1. 您需要對uploads目錄具有寫權限。 我假設您的本地計算機運行Windows,並且您的托管環境是linux

  2. 就像@Darren建議的那樣,使用絕對路徑。 $directory更改為$directory = getcwd() . 'uploads/'; $directory = getcwd() . 'uploads/';

如果這是在您的本地計算機上運行,​​而不是在服務器上運行,那么我可以立即想到兩個簡單的答案。 1.該文件夾在服務器上不存在,2.由於有人評論您沒有寫/讀該服務器上的文件夾的權限....我將檢查服務器配置,以確保您的應用程序池或用戶已讀/對該文件夾的寫權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM