2016-07-22 5 views
0

私は、ユーザーが画像をアップロードすることができます(数日前に完全に働いたと私もアップロードに関連する何かを変更していない)のサイトを持っているPHPのアップロード機能していない、エラーなし

ファイルの所有されますwww-dataに設定し、私も777の許可を得ようとしました。なぜならそれが動作していないはずはないからです。

のenctype /データなども、これはコードです

に設定されています

switch ($_FILES['upload']['error']) { 
      case UPLOAD_ERR_OK: 
       $msg="There is no error, the file uploaded with success."; 
       break; 
      case UPLOAD_ERR_INI_SIZE: 
       $msg="The uploaded file exceeds the upload_max_filesize directive in php.ini."; 
       break; 
      case UPLOAD_ERR_FORM_SIZE: 
       $msg="The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form."; 
       break; 
      case UPLOAD_ERR_PARTIAL: 
       $msg="The uploaded file was only partially uploaded."; 
       break; 
      case UPLOAD_ERR_NO_FILE: 
       $msg="No file was uploaded."; 
       break; 
      case UPLOAD_ERR_NO_TMP_DIR: 
       $msg="Missing a temporary folder. Introduced in PHP 5.0.3."; 
       break; 
      case UPLOAD_ERR_CANT_WRITE: 
       $msg="Failed to write file to disk. Introduced in PHP 5.1.0."; 
       break; 
      default: 
       $msg="unknown error with upload"; 
     } 
     echo("<script>console.log('".$msg."'); </script>"); 


     //process image 
     if($_FILES['upload']['tmp_name']!=null){ 
      $imgPath="../assets/img/horses/horse".$id.".jpg"; 
      if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
       $writeimage = fopen($imgPath, "w"); 
       if(!move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
        echo("<script>console.log('couldn't move img');</script>"); 
       } else{ 
        echo("<script>console.log('image uploaded');</script>"); 
       } 
       fclose($writeimage); 
      } else{ 
       echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
          Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
         </div>"); 
      } 
     } 

出力は
は、「エラー、成功を収めてアップロードされたファイルはありません
画像をアップロードしました。」です。
ただし、ファイルはサーバー上で変更または表示されません。

また、$ writeimage = fopen($ imgPath、 "w")という行も削除できます。とfclose($ writeImage)、私はできませんか?

+0

あなたのロジックが振り向く持っている: 'move_uploaded_file()' 'true'を返しますが、成功に。 – jeroen

+0

あたりとして、あなたの場合は、なぜそれがメッセージ画像がちょうどそれらのメッセージと私の引用符で何が間違ってデバッグ –

答えて

0

$imageを切り替えますいくつかの問題を参照してください。

//process image 
if($_FILES['upload']['tmp_name']!=null){ 
    $image="../assets/img/horses/horse".$id.".jpg"; 
    if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
     $writeimage = fopen($imgPath, "w"); 
     if(move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
      echo("<script>console.log('couldn't move img');</script>"); 
     } else{ 
      echo("<script>console.log('image uploaded');</script>"); 
     } 
     fclose($writeimage); 
    } else{ 
     echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
        Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
       </div>"); 
    } 
} 

$ imgPath変数はどこで定義されているか確認してください。 $ imageにする必要があります。 のfopenを使用すると、fcloseの

だからあなたのCOSEが可能shouled必要がありません...

if($_FILES['upload']['tmp_name']!=null){ 
    $image="../assets/img/horses/horse".$id.".jpg"; 
    if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
     if(move_uploaded_file($_FILES["upload"]["tmp_name"], $image)){ 
      echo("<script>console.log('couldn't move img');</script>"); 
     } else{ 
      echo("<script>console.log('image uploaded');</script>"); 
     } 
    } else{ 
     echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
        Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
       </div>"); 
    } 
} 
+0

ええ$のimgPathのタイプミスは問題は、それが誤って^^ – Juliette

+0

[OK]を何の問題は... ...また、投票あきらめおかげ –

+0

は、いくつかのマイナーな問題がまだここにはありません変更されている必要がありました(私の答えを見てください)。あなたのコンソールを開くと、画像が正常に移動したにもかかわらず 'could not move img'が表示されます(または引用符がうまくエスケープされていないためにエラーが表示されます)。 – BeetleJuice

0

このセクションでは、他のファイル操作を実行することを期待されたパスに

$writeimage = fopen($imgPath, "w"); 
if(move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
    echo("<script>console.log('couldn't move img');</script>"); 
} else{ 
    echo("<script>console.log('image uploaded');</script>"); 
} 
fclose($writeimage); 
呼び出さないでください

fopen問題があります。また、if小切手であなたのロジックを逆さまにしています。移動が成功すると、「imgを移動できませんでした」と記録されます。これを代わりに使用してください:

if(!move_uploaded_file($_FILES["upload"]["tmp_name"], $image)){ 
    echo '<script>console.log("couldn\'t move img");</script>'; 
} else{ 
    echo '<script>console.log("image uploaded");</script>'; 
} 

また、私がここで解決した他のいくつかの問題もありました。あなたは(あなたがいけない)echoと括弧を使用

  • echoに適切に引用符をエスケープしませんでした

    1. あなたは私ができる、あなたのコードで$imgPath
  • +0

    を変更アップロード与えているtha'tエラーに直面している状態?エコーは常に細かい – Juliette

    +0

    @Julietteがあなたの元のコードから、この文字列を見てみましょう仕事: ' 'それは終わらないどこimg''移動できませんでしたか? 'couldn'の後の引用符が文字列を終わらせてはならないことを解析アルゴリズムが知る方法はありません。一般に、エスケープしない限り、文字列の先頭と末尾の引用符を文字列内で使用することはできません。私は '持っている理由ですcouldn \ 'T' – BeetleJuice

    関連する問題