2016-08-24 5 views
0

私はこれについて助けが必要です。PHPのmove_uploaded_file()はtrueを返しますが、ディレクトリ内にファイルが見つかりません

move_uploaded_file()メソッドを使用してサーバーに画像をアップロードしていましたが、アップロードされたファイルがサーバー上の指定されたディレクトリ内に見つかりませんでした。私は徹底的にチェックし、別のディレクトリにアップロードされた場合にサーバ上のファイルを検索し、そのディレクトリのパーミッションをチェックしましたが、すべて完璧と思われます。私は本当に何が間違っていたのか分からない。 コードのスニペットを示します。

$uploaddir = './upload_dir/'; 
$allowed = array('gif', 'png', 'jpg','bmp'); 
$filename = $_FILES['uploadfile']['name']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
$data = array(); 
if (!in_array($ext, $allowed)) { 
    $data['status'] = 'error'; 
    $data['error_message'] = 'Invalid file type'; 
} 
else{ 
    $file_name = time() . '_' . uniqid() . '_' . basename($_FILES['uploadfile']['name']); 
    $file_name = preg_replace('/[^a-z0-9_\.\-]+/i', '_', $file_name); 
    $file = $uploaddir . $file_name; 

    if (isset($_FILES['uploadfile']['tmp_name']) && move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
     $data['status'] = 'success'; 
     $data['file_name'] = $file_name; 
    } else { 
     $data['status'] = 'error'; 
    } 

    echo json_encode($data); 
} 

ありがとうございます。

+0

あなたがフォルダ –

+0

に権限を与えても、DBの情報を更新しようとしていますか? – Karthi

+0

このファイルがあるのと同じ場所にupload_dirフォルダがあるかどうか確認してください。 –

答えて

1

here

をチェックし、セキュリティ上の理由のためにis_uploaded_file($_FILES['uploadfile']['tmp_name'])の代わりisset($_FILES['uploadfile']['tmp_name'])を使用して、アップロードディレクトリの代わりに使用$uploaddir = './upload_dir/';$uploaddir = $_SERVER['DOCUMENT_ROOT'] . "/upload_dir/";のために代わりに比べて1つの絶対パスを取得するためにしてください。

0

ありがとうございました。私はフォルダに間違った権限を与えました。それは私自身の問題のように思われる。

関連する問題