2016-08-10 5 views
-1

ファイルをアップロードする簡単なフォームがあります。このファイルは、PHPコードI var_dumpで識別されます。しかし、move_uploaded_file()機能を使用して移動すると、失敗し、error occurredが印刷されます。error_reporting(E_ALL)はエラーメッセージを表示しません

私は含まれていますerror_reporting(E_ALL);上記の機能が失敗するとエラーは表示されません。

HTMLフォーム:

<form method="post" action="src/blog.php" enctype="multipart/form-data"> 
     <input type="text" name="title" id="title"> 
     <input type="file" name="cover" id="cover"> 

     <textarea id="mytextarea" name="mytextarea">Hello, World!</textarea> 
     <input type="submit"> 
    </form> 

PHPコード:

<?php 
    error_reporting(E_ALL); 
    ini_set('display_errors', TRUE); 
    ini_set('display_startup_errors', TRUE); 
    require_once('Database.php'); 


    $content= $_POST['mytextarea']; 
    $title=$_POST['title']; 
    $file=$_FILES['cover']['name']; 
    $target_dir="uploads/"; 
    $target_file=$target_dir.basename($file); 
    if(move_uploaded_file($file,$target_file)){ 
     $db=new \src\Database(); 
     $db->addNewBlog($title,$target_file,$content); 
    } 
    else{ 
     echo 'error occured'; 
    } 

だから私の質問は、なぜエラーが表示されませんされ、どのように私はそれを修正することができますか?ドキュメントから

答えて

3

filenameが有効なアップロードファイルでない場合は、何のアクションも発生しませんし、move_uploaded_file()はFALSEを返します。

無効なアップロードファイルを指定しています。

なぜなら、move_uploaded_filesは最初のパラメータがファイルの一時パスであり、ファイルの名前ではないと考えているからです。そのように変更すると、問題が解決する場合があります。

move_uploaded_file($_FILES['cover']['tmp_name'], $target_file); 
関連する問題