我正在Centos 7专用机器上运行Centos 7。我开发了一个简单的脚本,通过PHP在机器上将任何文件上传到服务器,PHP代码:
<?php
if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {
echo "File ". $_FILES['uploadfile']['name'].'-'.$_FILES['uploadfile']["tmp_name"]." - uploaded successfully.<br>";
echo disk_free_space('/');
}
?>
<html>
<head>
<title>test</title>
</head>
<body>
<div style="text-align:center;">
<form action="" method="post" enctype="multipart/form-data">
<input name="uploadfile" type="file">
<input name="sendfile" value="upload" type="submit">
</form>
</div>
</body>
</html>当我发送一个示例文件回显时,返回:
文件sample.txt - /opt/lampp/temp/phpD58n0L -成功上传。
一些资料和事实:
xampp用户运行的daemon时/opt/lampp/temp/目录由chown command归属于daemon:daemon/opt/lampp/temp/设置为770权限php.ini设置为允许文件最多为128 is,上传目录为/opt/lampp/temp/发布于 2015-06-28 11:49:29
使用is_uploaded_file()只需检查它是否是上传的文件。它不会将它移到/temp/目录的任何位置。您可能想看看张贴上载手册。示例:
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}也就是说,您应该使用move_uploaded_file()将上传移到它所属的位置。否则,手册会解释为什么您没有找到/temp/目录中的文件:
如果文件未被移走或重命名,则将从请求末尾的临时目录中删除该文件。
函数档案()是对文件原点的安全检查,这就是它所做的全部工作。您可以将它与move_uploaded_file()一起使用,例如:
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination_file)) {
// Was moved
}
else {
// Wasn't moved
}
else {
// Wasn't valid
}但是,对于常规文件上传和移动,这可能是多余的,但我在手册中的注释中注意到,无论如何,move_uploaded_file()都会进行检查。
https://stackoverflow.com/questions/31099342
复制相似问题