error_reporting(E_ALL)不显示任何错误消息

时间:2016-08-10 18:28:18

标签: php

我有一个上传文件的简单表单。当我var_dump时,该文件由PHP代码标识。但是当使用move_uploaded_file()函数移动它时,它会失败并打印error occurred

我已经包含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';
    }

所以我的问题是为什么没有显示错误,我该如何纠正呢?

1 个答案:

答案 0 :(得分:3)

来自文档:

  

如果filename不是有效的上传文件,则不会执行任何操作,move_uploaded_file()将返回FALSE。

所以你给它一个无效的上传文件。

原因是move_uploaded_files期望第一个参数是文件的临时路径,而不是文件的名称。如此更改可能会解决您的问题:

move_uploaded_file($_FILES['cover']['tmp_name'], $target_file);