我有一个上传文件的简单表单。当我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';
}
所以我的问题是为什么没有显示错误,我该如何纠正呢?
答案 0 :(得分:3)
来自文档:
如果filename不是有效的上传文件,则不会执行任何操作,move_uploaded_file()将返回FALSE。
所以你给它一个无效的上传文件。
原因是move_uploaded_files期望第一个参数是文件的临时路径,而不是文件的名称。如此更改可能会解决您的问题:
move_uploaded_file($_FILES['cover']['tmp_name'], $target_file);