我正在尝试编写一些PHP来将文件上传到我的网络服务器上的文件夹中。这就是我所拥有的:
<?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]:无法打开流:E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php中的权限被拒绝第3行
警告:move_uploaded_file()[function.move-uploaded-file]:无法在E:\ inetpub \ vhosts \ mywebsite中将'C:\ WINDOWS \ Temp \ phpA30E.tmp'移动到'./test.txt'第3行的.com \ httpdocs \ dump \ upload.php
警告:无法修改标头信息 - 已在E:\ inetpub \ vhosts \ mywebsite.com中发送的标头(在E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php:3处开始输出)第4行\ httpdocs \ dump \ upload.php
PHP 4.4.7版 在Windows框上运行IIS。此特定文件/文件夹具有777权限。
有什么想法吗?
答案 0 :(得分:16)
OMG
move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
不要那样做。 $_FILES['file']['name']
可能是../../../../boot.ini
或任意数量的不良内容。你永远不应该相信这个名字。您应该将文件重命名为其他名称,并将原始名称与您的随机名称相关联。至少使用basename($_FILES['file']['name'])
。
答案 1 :(得分:7)
因为它是Windows,所以没有真正的777.如果你正在使用chmod,请检查与Windows相关的评论。
检查IIS帐户是否可以访问(读取,写入,修改)这两个文件夹:
E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
答案 2 :(得分:3)
尝试添加路径。以下代码适用于我:
<?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;
}
?>
答案 3 :(得分:1)
警告:move_uploaded_file()[function.move-uploaded-file]:无法将“C:\ WINDOWS \ Temp \ phpA30E.tmp”移动到E:\ inetpub \ vhosts \ mywebsite中的“./people.xml”第3行的.com \ httpdocs \ dump \ upload.php
是重要的一行,它说你不能把文件放在你想要的地方,这通常意味着权限问题
检查运行应用程序的进程(通常是php的webservers进程)是否有权在那里编写文件。
编辑:
暂挂一下 我跳了一点枪是第一行文件的路径正确吗?答案 4 :(得分:1)
另一个值得观察的是您的目录分隔符,您在Windows框中使用/。
答案 5 :(得分:1)
在“转储”文件夹安全权限组中添加IIS用户,并为其提供读/写访问权限。
答案 6 :(得分:0)
使用文件夹权限777
<?php
move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
答案 7 :(得分:0)
我们发现使用下面的路径
{['DOCUMENT_ROOT'] + 'path to folder'
并授予所有人对该文件夹的完全访问权限,从而解决了该问题。
确保不要在地址栏中显示位置。放弃位置没有意义。