PHP错误 – 上传文件

我想写一些PHP上传文件到我的networking服务器上的文件夹。 这是我有:

<?php if ( !empty($_FILES['file']['tmp_name']) ) { move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); header('Location: http://www.mywebsite.com/dump/'); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <title>Dump Upload</title> </head> <body> <h1>Upload a File</h1> <form action="upload.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> Select the File:<br /><input type="file" name="file" /><br /> <input type="submit" value="Upload" /> </form> </body> </html> 

我收到这些错误:

警告:move_uploaded_file(./ test.txt)[function.move-uploaded-file]:未能打开stream:第3行中的E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php中的权限被拒绝

警告:move_uploaded_file()[function.move-uploaded-file]:无法在E:\ inetpub \ vhosts \ mywebsite.com \中将'C:\ WINDOWS \ Temp \ phpA30E.tmp'移动到'./test.txt'第3行的httpdocs \ dump \ upload.php

警告:无法修改头文件信息 – 在E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \中已经发送(在E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php:第4行的dump \ upload.php

PHP版本4.4.7在Windows机器上运行IIS。 这个特定的文件/文件夹有777个权限。

有任何想法吗?

因为它是Windows,所以没有真正的777.如果你正在使用chmod ,请检查Windows相关的注释。

检查IIS帐户是否可以访问(读取,写入,修改)这两个文件夹:

 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\ C:\WINDOWS\Temp\ 

我的天啊

 move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); 

不要这样做。 $_FILES['file']['name']可能是../../../../boot.ini或任何不好的东西。 你永远不要相信这个名字。 您应该重新命名文件,并将原始名称与您的随机名称关联起来。 至少使用basename($_FILES['file']['name'])

尝试添加一个路径。 以下代码适用于我:

 <?php if ( !empty($_FILES['file']) ) { $from = $_FILES['file']['tmp_name']; $to = dirname(__FILE__).'/'.$_FILES['file']['name']; if( move_uploaded_file($from, $to) ){ echo 'Success'; } else { echo 'Failure'; } header('Location: http://www.mywebsite.com/dump/'); exit; } ?> 

警告:move_uploaded_file()[function.move-uploaded-file]:无法将E:\ inetpub \ vhosts \ mywebsite.com \中的'C:\ WINDOWS \ Temp \ phpA30E.tmp'移动到'./people.xml'第3行的httpdocs \ dump \ upload.php

是重要的一行,它说你不能把文件放在你想要的地方,这通常意味着权限问题

检查运行应用程序的进程(通常php的webservers进程)有权在那里写文件。

编辑:

挂了一下我跳了一下枪是第一行文件的路径正确?

另一个想到的是你的目录分隔符,你正在使用/在Windows中的一个..

在“转储”文件夹安全性执行组中添加IIS用户,并为其授予读/写权限。

使用文件夹权限777创建一个名为“image”的文件夹

 <?php move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']); ?>