为什么PHP';s move_uploaded_file()方法在我的脚本中返回false?

为什么PHP';s move_uploaded_file()方法在我的脚本中返回false?,php,html,file,forms,upload,Php,Html,File,Forms,Upload,我正在构建一个页面,允许将文件上载到服务器并进行排序。我知道这段代码,即使它在运行,也不适合在现场使用,因为我对服务器端脚本编写还很陌生,所以它只是让机制工作的初稿 无论如何,这里是上传表单页面: <html> <body> <?php include("header.php"); ?> <center> <h1>Please enter the details of the file you would like to upload:

我正在构建一个页面,允许将文件上载到服务器并进行排序。我知道这段代码,即使它在运行,也不适合在现场使用,因为我对服务器端脚本编写还很陌生,所以它只是让机制工作的初稿

无论如何,这里是上传表单页面:

<html>
<body>
<?php include("header.php"); ?>
<center>
<h1>Please enter the details of the file you would like to upload:</h1><br/> 


    <table> 
    <tr>
    <td align='center'> 
    <form action='uploader.php' method='POST' enctype='multipart/form-data'><b>Name:</b> </td> 
    <td align='left'><input type='text' name='name' maxlength='255' />
    </td>
    </tr> 

    <tr>
    <td align='center'><b>Description of file uploaded: </b>
    </td> 
    <td align='left'><textarea name='description' rows='5' cols='20'></textarea>
    </td>
    </tr> 

    <tr>
    <td align='center'><b>Category: </b>
    </td> 

    <td align='left'> 
    <select name='category'> 
    <option value='1'>Agriculture</option>
    <option value='2'>Sexual Health</option>
    <option value='3'>Arithmetic</option>
    <option value='4'>Technology</option>
    <option value='5'>Reading/Literature</option>
    <option value='6'>Health/Medicine</option>
    </td>
    </tr>

    <tr>
    <td align ='center' >
    <b>File: </b>
    </td>
    <td align='left'>
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <Choose a file to upload: <input name="uploadedfile" type="file" /><br />
    </td>
    </tr>

    <tr height='20px'></tr> 

    <tr align ='left'>
    <td> </td>
    <td>
    <input type='Submit' value='Upload File' /> 
    </td>
    </tr>
    </table> 

</center>

<?php include("footer.php"); ?>
</body>
</html>

请输入要上载的文件的详细信息:
姓名: 上载文件的说明: 类别: 农业 性健康 算术 技术 阅读/文学 健康/医学 文件:
您似乎正确地调用了函数,并在正确的上下文中使用了它

就文档而言,有两种情况下可以从
move\u upload\u file
函数返回false:

如果文件名不是有效的上载文件,则不会执行任何操作,并且move_uploaded_file()将返回FALSE

我们可以假设情况并非如此,因为我们在
$\u FILES
数组中使用文件中的
tmp\u name
元素

如果文件名是有效的上载文件,但由于某种原因无法移动,则不会执行任何操作,并且move_uploaded_file()将返回FALSE。此外,将发出警告

因此,这一定与这一统天下有关。我建议打开
display\u errors
,这样我们就可以看到生成的警告。

如果($\u FILES['uploadedfile']['error']!=0)
会给出错误的可能原因。
查看错误代码,问题是:HTML无效,导致
表单
元素过早关闭

没有
结束标记,因此它被插入到下一个适当的点,即

<td align='center'>
  <form action='uploader.php' method='POST' enctype='multipart/form-data'>
    <b>Name:</b>
  </form> <!-- <- here -->
</td> 

姓名:

这样,名为
uploadedfile
的文件输入元素就在表单之外,永远不会被发送到
uploader.php
。若要更正此问题,请将开始标记移到
表之外,在
正文
末尾附近添加结束标记,然后删除
您的权限是什么?文件夹位于我的本地计算机上,并且似乎没有任何特殊限制。发生错误时,您可以使用$\u FILES['uploadedfile']['error']并检查到底发生了什么(我猜您正在将文件移动到不存在的目录)。有关如何解释文件上载时的错误消息,请咨询php.net。我经常遇到的错误是“未定义索引:uploadedfile”我以为表单为我将文件添加到了这个数组中……我应该自己添加它吗?更好的是,始终检查是否
$\u FILES['uploadedfile']['error']==UPLOAD\u ERR\u OK
,并根据错误采取相应的行动(请参阅)。我认为在前面的地方出现了错误,因为
$\u FILES
中出现了错误“Undefined index:uploadedfile”。我得到的错误是:注意:未定义的索引:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的uploadedfile在第8行注意:未定义的索引:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的uploadedfilen第10行感谢您的输入,但这应该是一条评论。更重要的是,正如您在上面看到的,我已经用此消息对问题发表了评论(是的,我知道如果您的代表低于50岁,您不能对其他人的问题发表评论).hmm,当我这样做时,我得到一个额外的错误:注意:未定义的变量:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的target_path在第10行非常感谢这确实是个问题!我只是假设它是php,因为我对它太陌生了!不过有一件事…我已经测试了这个脚本,现在它可以运行了…而且它仍然可以运行上传.mp3文件时出现ses错误。我认为这只是大小问题,但即使@Paul:这也不会导致任何问题;我看到的唯一一件事是粘贴的代码包含最大文件大小规则
<td align='center'>
  <form action='uploader.php' method='POST' enctype='multipart/form-data'>
    <b>Name:</b>
  </form> <!-- <- here -->
</td>