Php 文件上载失败

Php 文件上载失败,php,file-upload,Php,File Upload,我有一个最简单、最愚蠢的脚本,用于上传文件并在操作后返回success true或false。不知道为什么,脚本突然停止工作,给我一个无法打开流:在move\u upload\u file行中没有这样的文件或目录错误。这很奇怪,因为我没有改变任何路径,权限,基本上什么都没有。有什么建议可以解决这个问题吗?我是php的新手。我的脚本如下: if(isset($_FILES)){ $file_tmp = $_FILES['mpp-file']['tmp_name']; $file_

我有一个最简单、最愚蠢的脚本,用于上传文件并在操作后返回success true或false。不知道为什么,脚本突然停止工作,给我一个
无法打开流:在
move\u upload\u file
行中没有这样的文件或目录
错误。这很奇怪,因为我没有改变任何路径,权限,基本上什么都没有。有什么建议可以解决这个问题吗?我是php的新手。我的脚本如下:

if(isset($_FILES)){
    $file_tmp  = $_FILES['mpp-file']['tmp_name'];
    $file_name = $_FILES['mpp-file']['name'];

    if(is_uploaded_file($file_tmp)) {
        if(move_uploaded_file($file_tmp, "tmp/$file_name")){               
            echo '{"success": true}';
            unlink("tmp/$file_name");
        } else {
            echo '{"success": false}';
        }    
    }  else{
        echo '{success: false}';
    }
}
以及stacktrace中的页面:

<html>
<head></head>
<body>
<font size="1"><table class="xdebug-error" dir="ltr" border="1" cellspacing="0" cellpadding="1">
<tbody><tr><th align="left" bgcolor="#f57900" colspan="5"><span style="background-color: #cc0000; color: #fce94f; font-size: x-large;">( ! )</span> Warning: move_uploaded_file(tmp/MSP1.mpp) [<a href="function.move-uploaded-file">function.move-uploaded-file</a>]: failed to open stream: No such file or directory in K:\LAMP\www\project\msp-load.php on line <i>7</i></th></tr>
<tr><th align="left" bgcolor="#e9b96e" colspan="5">Call Stack</th></tr>
<tr><th align="center" bgcolor="#eeeeec">#</th><th align="left" bgcolor="#eeeeec">Time</th><th align="left" bgcolor="#eeeeec">Memory</th><th align="left" bgcolor="#eeeeec">Function</th><th align="left" bgcolor="#eeeeec">Location</th></tr>
<tr><td bgcolor="#eeeeec" align="center">1</td><td bgcolor="#eeeeec" align="center">0.0034</td><td bgcolor="#eeeeec" align="right">677944</td><td bgcolor="#eeeeec">{main}(  )</td><td title="K:\LAMP\www\gantt_latest\examples\MSProject_import\msp-load.php" bgcolor="#eeeeec">..\msp-load.php<b>:</b>0</td></tr>
<tr><td bgcolor="#eeeeec" align="center">2</td><td bgcolor="#eeeeec" align="center">0.0034</td><td bgcolor="#eeeeec" align="right">678256</td><td bgcolor="#eeeeec"><a href="http://www.php.net/move_uploaded_file" target="_new">move_uploaded_file</a>
(  )</td><td title="K:\LAMP\www\project\msp-load.php" bgcolor="#eeeeec">..\msp-load.php<b>:</b>7</td></tr>
</tbody></table></font>
<br>
<font size="1"><table class="xdebug-error" dir="ltr" border="1" cellspacing="0" cellpadding="1">
<tbody><tr><th align="left" bgcolor="#f57900" colspan="5"><span style="background-color: #cc0000; color: #fce94f; font-size: x-large;">( ! )</span> Warning: move_uploaded_file() [<a href="function.move-uploaded-file">function.move-uploaded-file</a>]: Unable to move 'K:\LAMP\tmp\phpC7A5.tmp' to 'tmp/MSP1.mpp' in K:\LAMP\www\project\msp-load.php on line <i>7</i></th></tr>
<tr><th align="left" bgcolor="#e9b96e" colspan="5">Call Stack</th></tr>
<tr><th align="center" bgcolor="#eeeeec">#</th><th align="left" bgcolor="#eeeeec">Time</th><th align="left" bgcolor="#eeeeec">Memory</th><th align="left" bgcolor="#eeeeec">Function</th><th align="left" bgcolor="#eeeeec">Location</th></tr>
<tr><td bgcolor="#eeeeec" align="center">1</td><td bgcolor="#eeeeec" align="center">0.0034</td><td bgcolor="#eeeeec" align="right">677944</td><td bgcolor="#eeeeec">{main}(  )</td><td title="K:\LAMP\www\gantt_latest\examples\MSProject_import\msp-load.php" bgcolor="#eeeeec">..\msp-load.php<b>:</b>0</td></tr>
<tr><td bgcolor="#eeeeec" align="center">2</td><td bgcolor="#eeeeec" align="center">0.0034</td><td bgcolor="#eeeeec" align="right">678256</td><td bgcolor="#eeeeec"><a href="http://www.php.net/move_uploaded_file" target="_new">move_uploaded_file</a>
(  )</td><td title="K:\LAMP\www\project\msp-load.php" bgcolor="#eeeeec">..\msp-load.php<b>:</b>7</td></tr>
</tbody></table></font>
</body>
</html>

(!)警告:移动上传的文件(tmp/MSP1.mpp)[]:无法打开流:第7行的K:\LAMP\www\project\msp-load.php中没有此类文件或目录
调用堆栈
#时间记忆功能定位
10.0034677944{main}()..\msp load.php:0
20.0034678256
()..\msp load.php:7

(!)警告:移动上传的文件()[]:无法将第7行K:\LAMP\www\project\msp-load.php中的“K:\LAMP\tmp\phpC7A5.tmp”移动到“tmp/MSP1.mpp” 调用堆栈 #时间记忆功能定位 10.0034677944{main}()..\msp load.php:0 20.0034678256 ()..\msp load.php:7
我正在Win7上使用WAMP服务器。

不要执行以下操作:

if(isset($_FILES)){
上载失败仍将生成$\u文件数组。您需要检查错误参数:

if ($_FILES['mpp-file']['error'] !== UPLOAD_ERR_OK) {
     die("Upload failed with error code " . $_FILES['mpp-file']['error']);
}
此处定义了错误代码/常量:


同样,不要使用
['name']
参数来存储文件。该字段在远程用户的控制下,他们可以简单地修改上传数据,比如
。/../../../../../../../../../../etc/passwwd
,您的脚本将很高兴地覆盖用户想要的服务器上的任何文件。

您需要检查tmp目录是否存在。 当尝试移动文件的位置不存在时,将显示此错误

if(isset($_FILES)){
    $file_tmp  = $_FILES['mpp-file']['tmp_name'];
    $file_name = $_FILES['mpp-file']['name'];
$directory_path = $_SERVER["DOCUMENT_ROOT"]."/tmp/$file_name";

    if(is_uploaded_file($file_tmp)) {
if(is_dir($directory_path))
{

        if(move_uploaded_file($file_tmp, "tmp/$file_name")){               
            echo '{"success": true}';
            unlink("tmp/$file_name");
        } else {
            echo '{"success": false}';
        }
}else
{
echo "No such directory exists";
}    
    }  else{
        echo '{success: false}';
    }
}

我也有类似的问题,但坦率地说,我的问题是文件名中有一个管道字符。请检查您的文件名是否有任何特殊字符。

是否存在
tmp/
文件夹?已解决!事实证明,由于我不完全理解的原因,我的/tmp文件夹被删除了。谢谢你的快速回答。