2016-08-07 9 views
2

アップロード用のファイルを投稿しようとしていますが、「ストリームを開くことに失敗しました:そのようなファイルまたはディレクトリはありません」と表示され続けます。私はそれを私の出力ディレクトリに絞り込みました、なぜそれが存在しないのか、本当にわからないのです。 yii2が私のパスを再ルーティングしようとしているのか、何が起きているのか分かりません。すべての情報は役に立ちます、ありがとう。yii2アップロードディレクトリが存在しません

フォルダ構造:

www\images\uploads\ 
protected\controlers\UploadController.php 
protected\views\upload\index.php 

のindex.phpコード:

<?php 
$output_dir = "/images/uploads/"; // <-- this is where i think my issue is 
if(isset($_FILES["myfile"])) 
{ 
$ret = array(); 
$error =$_FILES["myfile"]["error"]; 
{ 
    //this is hardcoded for now just to test. 
    session_start(); 
    $listing_ID = $_GET['id']; 
    if(!is_array($_FILES["myfile"]['name'])) //single file 
    { 
     $ImageName  = str_replace(' ','-',strtolower($_FILES['myfile']['name'])); 
     $ImageType  = $_FILES['myfile']['type']; //"image/png", image/jpeg etc. 
     $ImageExt = substr($ImageName, strrpos($ImageName, '.')); 
     $ImageExt  = str_replace('.','',$ImageExt); 
     $ImageName  = substr(md5(uniqid(mt_rand(), true)), 0, 5); 
     $NewImageName = $listing_ID.'_'.$ImageName.'.'.$ImageExt; 
     move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir. $NewImageName); 
     echo "<br> Error: ".$_FILES["myfile"]["error"]; 
     $ret['fileName']= $output_dir.$NewImageName; 
     $image_entry = new Images(); 
     $image_entry->image = $NewImageName; 
     $image_entry->listing_ID = $listing_ID; 
     if (!$image_entry->save()) { 
      print_r($image_entry->getErrors()); 
     } 
    } 
    else 
    { 
     $fileCount = count($_FILES["myfile"]['name']); 
     for($i=0; $i < $fileCount; $i++) 
     { 
      $ImageName  = str_replace(' ','-',strtolower($_FILES['myfile']['name'][$i])); 
      $ImageType  = $_FILES['myfile']['type'][$i]; //"image/png", image/jpeg etc. 
      $ImageExt = substr($ImageName, strrpos($ImageName, '.')); 
      $ImageExt  = str_replace('.','',$ImageExt); 
      $ImageName  = substr(md5(uniqid(mt_rand(), true)), 0, 5); 
      $NewImageName = $listing_ID.'_'.$ImageName.'.'.$ImageExt; 
      $ret[$NewImageName]= $output_dir.$NewImageName; 
      move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$NewImageName); 
      $image_entry = new Images(); 
      $image_entry->image = $NewImageName; 
      $image_entry->listing_ID = $listing_ID; 
      if (!$image_entry->save()) { 
       print_r($image_entry->getErrors()); 
      } 
     } 
    } 
} 
echo json_encode($ret); 
} 
?> 
+0

このトラブルシューティングのチェックリストに従うことで、おそらく原因がわかります。http://stackoverflow.com/questions/36577020/failed-to-open-stream-no-such-file-or-directory私はあなたのコードにいくつかの問題があると思います。その1つは相対パス、もう1つはあなたのインクルードパスのようです –

答えて

1

私はあなたのエラーを見ることができるようにあなたのコードの1行目に相対パスを使用しているので、それは起こります。 絶対パスを使用すると、エラーは表示されません。 yii 1バージョンを使用していると思います。これは構文かもしれませんし、ベースパスのためのGoogle構文も可能です。

使用最初の行でこのコードは: - Yii::app()->basePath . '/images/uploads/';

今、あなたは$ OUTPUT_DIRを印刷するかどうか。 var/www/html/your_app/images/uploads

このような場合は教えてください。

+0

"PHP致命的なエラー 'yii \ base \ ErrorException'メッセージ 'クラス'の画像 '見つかりません'" –

+0

ディレクトリが存在することを確認し、アクセス許可を与えてくださいまた、また、$ output_dirを出力して絶対パスを確認し、存在するかどうかを確認してください。 –

+0

フォルダが存在し、ファイルがフォルダにアップロードされています。それはまだエラーで応答します。 –

関連する問題