【发布时间】:2014-03-22 01:56:03
【问题描述】:
我正在使用这个 PHP 上传 CSV 文件:
$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
if ( in_array($_FILES['file']['type'],$mimes) && ($_FILES["file"]["size"] < 20000) )
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
move_uploaded_file($_FILES["file"]["tmp_name"],
"csv/" . $_FILES["file"]["name"]);
echo "Stored in: " . "csv/" . $_FILES["file"]["name"];
}
}
else
{
echo "Invalid file";
}
它在我的开发 XAMPP 设置中完美运行。
当我在 Linux 机器上部署站点时,它的行为就像文件上传成功但它不在所需的文件夹或 tmp 文件夹中。
我的表格是:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
我的浏览器从回声中返回:
Upload: rere.csv
Type: application/vnd.ms-excel
Size: 2.34375 kB
Temp file: /tmp/php5XXT5v
Stored in: csv/rere.csv
我有一个更熟悉 Linux 的朋友看这个,他写了一些上传脚本。我们无法找到解决方案。
有什么提示吗?
【问题讨论】:
-
尝试 chmod 777 csv 目录
-
好旧的 W3fools 上传脚本...享受让您的服务器被这些东西在您的系统上撕开的安全漏洞破坏。
-
如果脚本没有返回“无效文件”,可能是权限问题。不要在生产环境中执行 777 chmod,但您必须确保目标文件夹是可写的并且可以使用 www-data(apache2 用户)执行。
-
为什么不给
move_uploaded_file和echo分配一个变量呢...另外,不要相信那些安装了 linux 然后使用 GUI 寻求帮助的人。 -
@Ankit Pise chmod 777 csv 会起作用,但它会自找麻烦。
标签: php linux file-upload xampp